首页 > 解决方案 > 方法 Illuminate\Database\Query\Builder::id 不存在

问题描述

我想在添加新项目时自动填充 ID。我按照教程,但我得到了这个错误

这是我的模特

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use DB;

class Kode extends Model
{
    protected $table = "report";
    protected $fillable = [
        'id_permintaan', 'tanggal_permintaan', 'tanggal_pengiriman', 'nama_client', 'nama_client', 'jumlah', 'status'
    ];
    public $timestamps = false;
    public $incrementing = false;
    protected $primaryKey = 'id_permintaan';

    public static function kode()
    {
        $id = DB::table('report')->max('id_permintaan');
        $addNol = '';
        $id = str_replace("PM", "", $id);
        $id = (int) $id + 1;
        $incrementid = $id;

        if (strlen($id) == 1) {
            $addNol = "000";
        } elseif (strlen($id) == 2) {
            $addNol = "00";
        } elseif (strlen($id == 3)) {
            $addNol = "0";
        }

        $idBaru = "PM".$addNol.$incrementid;
        return $idBaru;
    }
}

这是我的控制器

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use App\Kode;

class ReportController extends Controller
{

    public function tambahreport()
    {
        $id = Kode::id();
        return view('tambahreport');

    }
}

这是我的观点

<div class="form-group">
ID Permintaan :<input type="text" class="form-control item" name="id_permintaan" required="required" value="{{ $id }}" id="id_permintaan"> 
{!! $errors->first('id_permintaan', "<p class='invalid-feedback'>:message</p>") !!}
</div>

如果我单击添加新项目,我希望我的 id permintaan 像 PM1 一样自动填充。如果再次添加项目,则 id permintaan 是 PM2。如何解决这个错误。谢谢你

标签: laravellaravel-5

解决方案


我同意@ceejayoz。这看起来像是写得很糟糕的代码。有更好的方法来实现这个恕我直言。

无论如何要回答您的问题,id()构建器实例上不存在 The 。因此,您需要执行以下操作:

$id = Kode::first()->id_permintaan;

或者您可以使用Route 模型绑定

public function tambahreport(Kode $kode)
{
    $id = $kode->id_permintaan;
    return view('tambahreport')->withId($id);
}

推荐阅读