首页 > 解决方案 > Laravel:保存/附加/同步自定义枢轴模型(belongsToMany)

问题描述

希望你今天过得愉快。

我正在使用 Laravel 8。我有三个模型,我需要这些模型“纠缠”,可以这么说。

所以,我有三个基本表

areas,threats,positions
---
id
name

所以需要的关系是这样的:

到目前为止,我的方法是这样的:

至此,第一个关系可以通过doing来保存$model->relatedModel()->attach($id);

现在,对于第二个关系,我该如何附加相关模型?

我最后的手段是查询保存的自定义数据透视模型并附加t2模型,但我想先问一下是否有更清洁、更雄辩的 laravel方法来做到这一点。

任何建议都会有所帮助。提前感谢您抽出宝贵时间。

标签: laraveleloquenteloquent-relationship

解决方案


我能想到的是两种方式,一种只是参考Spatie Laravel 角色权限

在 Spatie 中,这种关系类似于权限角色之间的多对多关系以及多对多多态关系映射用户、角色和权限。

或者

在多对多枢轴关系中使用额外的属性。

就像是

return $this->belongsToMany('App\Role')->withPivot('column1', 'column2');

并且 attach 和 detach 也接受额外的属性

$user->roles()->attach($roleId, ['expires' => $expires]);

在检索时,您可以使用 where 子句来指定您的选择

return $this->belongsToMany('App\Role')->wherePivot('approved', 1);

我希望这会给你足够的想法来实现它。所有片段均来自文档,因此您可以直接搜索和参考


推荐阅读