Laravel 5 拉威尔5号>;触摸数据透视表(多对多)
为什么我的透视表中的updated_at字段不更新,并给出以下设置 模型 控制器Laravel 5 拉威尔5号>;触摸数据透视表(多对多),laravel-5,pivot-table,Laravel 5,Pivot Table,为什么我的透视表中的updated_at字段不更新,并给出以下设置 模型 控制器 $conversation = Conversation::find($id); $conversation->users()->touch(); 就我所知,最后一行还应该更新数据透视表updated_at字段,不是吗 但事实并非如此。现在,我必须通过数据库查询手动执行此操作。我认为最好的方法是: $conversation->users()->updateExistingPivot(
$conversation = Conversation::find($id);
$conversation->users()->touch();
就我所知,最后一行还应该更新数据透视表updated_at字段,不是吗
但事实并非如此。现在,我必须通过数据库查询手动执行此操作。我认为最好的方法是:
$conversation->users()->updateExistingPivot(
$conversation->users()->get(),
['updated_at' => date('Y-m-d H:i:s')]
);
它对我很有用(Laravel 5.7)。这有什么用吗?您是否收到错误?它会在忽略透视表的同时,在字段处触摸用户更新的_。没有错误。如果将
->withPivot()
添加到users()
函数,然后尝试$conversation->users()->pivot->touch()代码>它有什么作用吗?还是完全错了?好的。我试图在没有数据库的情况下测试这个,所以这都是理论上的lol。。。尝试$users=$conversation->users()->get()
,然后循环这些用户并访问其pivot
属性:foreach($user作为$user的用户){$user->pivot->touch();}
您可以这样做,或者您可能必须设置每个pivot->updated_at=date(“Y-m-d”)代码>或任何您想要的格式。让我知道这些方法是否有效。好吧,这很遗憾,但是你帮助我更好地理解了如何访问pivot模型。由于查询量很大,我现在坚持使用DB类,直到找到一个更“优雅的laravel开箱即用解决方案”:-)谢谢Tim Lewis。
$conversation->users()->updateExistingPivot(
$conversation->users()->get(),
['updated_at' => date('Y-m-d H:i:s')]
);