插入与取消多对多关系 - attach 与 detach

0
视频
0
完成
0%
进度
0
分钟
0
完成
0%
进度

插入多对多的关系,可以使用 attach 或者 sync 方法。比如我们要找给某部电影添加相关的人物,首先可以找到这部电影,然后利用它跟人物之间的多对多的关系,再调用 attach 方法,在方法里,可以指定跟这部电影相关人物的 id 号。

下面,我们可以去演示一下。

打开 routes.php ,在这里我们去添加一条路由 ... 添加一个 get 类型的路由 ... 地址是 related-people ... 这里再用一个匿名函数 ... 这样请求查看 related-people 这个地址的时候,就会去执行在这个匿名函数里面的代码 ... 在这里,我们可以去演示一下插入多对多的关系..

Route::get('related-people', function() {}

... 比如我们想去给 id 号是 2 这部电影添加一个相关的人物。先去看一下这部电影 ... 打开它的页面 ... movies/2

在人物这里,是一个空白的列表,说明还没有给它指定相关的人物。

(#返回),先找到 id 号是 2 的这部电影 ... 可以使用 Movie 模型的 find 方法 ... 把电影的 id 号传递给这个方法。

$movie = Movie::find(2);

接着再去使用电影模型跟人物模型之间的关系 ... 就是我们在 Movie 模型里面定义的 people 方法 ... 再使用 attach ,去给这个电影内容添加相关的人物 ..

比如我们让它去关联 id 号是 x 的这个人物 ... 在 attach 方法里面,输出这个 id 号 .. 这样,会在电影和人物的中间表里面,保存这部电影的 id ,还有在 attach 方法里面指定的这个人物的 id ...

在这个表里,还有一个 job 字段 ... 想同时去设置一下这个字段的值,可以作为 attach 方法的第二个参数传递进去 ... 这个参数是一个数组 .. 数组里面的每个项目就是字段的名称,还有要保存的对应的值 ...

$movie->people()->attach(x, array('job' => '演员'));

(#返回)回到浏览器。

打开 related-people ...

然后再去查看一下 id 号是 2 的这部电影 ... 在人物这里,你会看到,刚才用 attach 方法给它添加的相关的人物 ..

打开数据库管理软件 ... 找到 movie_people 这个表 ... 在这里,你会看到一行新的记录 ... movie_id 是 x ,people_id 是 x ... job 字段的值是 演员 ...

移除

删除电影和人物之间的关联,可以使用 detach ...

(#返回),在这个方法里,指定要取消关联的人物的 id 号 ...

$movie->people()->detach(1);

(#返回),再访问一次 related-people 这个地址 ...

回到电影页面 ...

你会看到,已经取消了之前用 attach 设置的那个关联。

0:00
2:25
0:00
0:00
0:00
3:54

插入与取消多对多关系 - attach 与 detach《 Laravel 数据库 》

统计

11716
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点