laravel - 方法 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。如何解决这个错误。谢谢你
解决方案
我同意@ceejayoz。这看起来像是写得很糟糕的代码。有更好的方法来实现这个恕我直言。
无论如何要回答您的问题,id()
构建器实例上不存在 The 。因此,您需要执行以下操作:
$id = Kode::first()->id_permintaan;
或者您可以使用Route 模型绑定:
public function tambahreport(Kode $kode)
{
$id = $kode->id_permintaan;
return view('tambahreport')->withId($id);
}
推荐阅读
- javascript - 猫鼬中的最大数量验证
- go - 优先队列返回错误的顺序
- python - 有没有办法在保持比例的同时估算分类值?
- java - 根据用户决定在图形界面中执行的操作来执行某个 main。JAVA外汇
- java - 如何在 sdk 功能之外使用结构身份进行身份验证
- javascript - 添加 CSS 时自定义代码编辑器不起作用并中断
- fullscreen - 全屏显示带有 MathJax 的 JSXGraphm
- spring-boot - 没有休眠的Spring Boot oracle数据库?
- sqlite - sqlite3 Vacuum 命令和引用的 rowid
- r - 在 Simmer for R 中记录所选资源