我一直在嘗試無數個小時,但在更新模型關係時仍然存在問題,最接近的是「方法填充不存在」。錯誤。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