我一直在尝试无数个小时,但在更新模型关系时仍然存在问题,最接近的是“方法填充不存在”。错误。Laravel 5无法更新关系
上市型号:
class Listing extends Model
{
protected $fillable = [
'uid', 'start_date',...........
];
public function locations()
{
return $this->hasMany('App\ListingLocation');
}
}
位置(关系到上市 - 的hasMany):
class ListingLocation extends Model
{
protected $fillable = [
'listing_id', 'location',
];
public function listing()
{
return $this->belongsTo('App\Listing');
}
}
这将返回我的模型和关系,我可以用DD($上市)查看
$listing = Listing::with('locations')->findOrFail($id);
这将更新我的列表模型,我可以在再次调用dd($ listing)后看到更改
$listing->fill($array);
但是,当我试图按照下面的关系填充关系时,我得到'方法填充不存在'。
$listing->locations->fill($array['locations']);
如何在调用$ listing-> push();之前成功地更新关系?
'Locations'是一个'hasMany'关系,所以它会返回一个集合,而不是一个单一的模型。你必须选择一个位置来更新。 – aynber
我想你正在寻找同步方法:'$ listing-> locations() - > sync($ array ['locations']);' –
由于这是一对多的关系,所以同步无法正常工作?当调用同步时,我得到一个错误:调用未定义的方法Illuminate \\ Database \\ Query \\ Builder :: sync() – DLO