我有两个模型,它们之间定义了多对多关系: User
和 Post
。我需要访问 所有用户帖子的数据透视表记录 。我怎样才能做到这一点?例如:
$user->posts()->pivot()->get(); // I need to do something like this
我需要这个的原因是在这些枢轴的一个查询中执行批量更新。插图示例:
// set 'times_seen' to 100 for all of the pivot records
$user->posts()->pivot()->update(['times_seen' => 100]);
最佳答案
你的问题不是很清楚,我不确定你真正需要什么,所以请提供更多细节。
数据透视表 表中的数据在相关模型的 $pivot 属性中可用,因此您可以通过以下方式访问它:
foreach ($user->posts as $post) {
echo $post->pivot->someFieldFromPivotData;
}
您可以在文档中找到有关如何使用数据透视表的更多信息:https://laravel.com/docs/5.1/eloquent-relationships#many-to-many
更新所有相关数据透视行的最有效方法是直接对该表进行操作:
// to set to fixed value
DB::table('pivot_table_name')->where('user_id', $user->id)->update(['times_seen' => 1]);
// to increment by one
DB::table('pivot_table_name')->where('user_id', $user->id)->increment('times_seen');
关于php - 如何使用 Eloquent 只批量选择数据透视表?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37210188/