【发布时间】:2016-02-06 16:08:29
【问题描述】:
为什么我的 数据透视表 中的 updated_at 字段没有更新以提供以下设置?
型号
class Conversation extends Model {
public function users()
{
return $this->belongsToMany('App\User')->withTimestamps();
}
}
控制器
$conversation = Conversation::find($id);
$conversation->users()->touch();
最后一行应该 - 据我了解整个事情 - 也更新数据透视表 updated_at 字段,不是吗?
但事实并非如此。现在我必须通过数据库查询手动完成。
【问题讨论】:
-
这有什么作用吗?你有错误吗?
-
它在忽略数据透视表的同时触及用户 updated_at 字段。没有错误。
-
如果您将
->withPivot()添加到您的users()函数中,然后尝试$conversation->users()->pivot->touch();,它有什么作用吗?还是完全出错了? -
好的。我正在尝试在没有数据库的情况下对此进行测试,所以这都是理论上的哈哈...尝试
$users = $conversation->users()->get();,然后遍历这些用户并访问他们的pivot属性:foreach($users AS $user){ $user->pivot->touch(); }你也许可以做到这一点,或者您可能必须设置每个pivot->updated_at = date("Y-m-d");或您想要的任何格式。让我知道这些是否有效。 -
好吧,这很可悲,但你帮助我更好地理解了访问枢轴模型。由于查询量的原因,我现在坚持使用 DB 类,直到找到更多“优雅的 laravel 开箱即用解决方案”:-) 谢谢 Tim Lewis。
标签: laravel-5 pivot-table