public function edit(Request $request, $id)
{
$bridge = Bridge::where('bridge_id',$id);
$bridge->bridge_id = $request->bridge_id;
$bridge->bridge_name = $request->bridge_name;
$bridge->bridge_description = $request->bridge_description;
$bridge->bridge_region = $request->bridge_region;
$bridge->latitude = $request->latitude;
$bridge->longitude = $request->longitude;
$bridge->save();
}
我很困惑因为如果这个$id
。我没有increments('id')
列,因为我在表中将其更改为string('bridge_id')
。我不能让更新/编辑工作。
这是错误消息:
BadMethodCallException:在第50行的文件C:\ xampp \ htdocs \ PhilSIMS \ vendor \ laravel \ framework \ src \ Illuminate \ Support \ Traits \ ForwardsCalls.php中调用未定义的方法Illuminate \ Database \ Eloquent \ Builder :: save()
第一个错误非常明确:
BadMethodCallException:调用未定义的方法Illuminate \ Database \ Eloquent \ Builder :: save()
这是因为您在查询生成器中调用->save()
方法而不是实际的Model(Bridge
)实例。要解决此问题,请首先使用->first()
方法检索要更新的元素。
$bridge = Bridge::where('bridge_id',$id)->first();
// Instead of: $bridge = Bridge::where('bridge_id',$id);
或者甚至更好,因为你需要找到一个元素..为什么不使用那个方法?
$bridge = Bridge::find($id);
查看有关此主题的文档:Retrieving Single Models / Aggregates。
然后,下一个错误:
未找到列:1054未知列
id
似乎是因为Laravel不知道你的原始关键是bridge_id
而不是id
。默认情况下,如果未指定自定义原始键,Laravel将查找名为id
的原始键。
要解决此问题,请转到Bridge
模型并添加:
// Bridge.php
protected $primaryKey = 'bridge_id';
有关Model Conventions的更多信息,请参阅documentation。
在您的查询中添加first
:$bridge = Bridge::where('bridge_id',$id)->first();