Laravel Eloquent - Attach vs Sync(Laravel Eloquent - 附加与同步)
问题描述
Laravel 4 的 Eloquent ORM 中的 attach() 和 sync() 有什么区别?我试图环顾四周,但找不到任何东西!
attach():
- 在处理多对多关系时插入相关模型
- 不需要数组参数
示例:
$user = User::find(1);$user->roles()->attach(1);sync():
与
attach()方法类似,sync()方法用于附加相关模型.但是,主要区别在于:
sync()接受要放在数据透视表上的 ID 数组- 其次,最重要的,如果数组中不存在模型,同步方法会从数据透视表中删除数据,并只将新项目插入数据透视表.
示例:
user_role
<前>id user_id role_id1 12 12 12 53 12 2$user = User::find(12);$user->roles()->sync(array(1, 2, 3));以上操作将删除:
<前>id user_id role_id2 12 5
然后将 role_id 3 插入到表中.
user_role 表
<前>id user_id role_id1 12 13 12 24 12 3What is the difference between attach() and sync() in Laravel 4's Eloquent ORM? I've tried to look around but couldn't find anything!
attach():
- Insert related models when working with many-to-many relations
- No array parameter is expected
Example:
$user = User::find(1);
$user->roles()->attach(1);
sync():
Similar to the attach() method, the sync() method is used to attach related models. However, the main differences are:
sync()accepts an array of IDs to place on the pivot table- Secondly, most important, the sync method will delete the data from the pivot table if the model does not exist in the array, and insert only the new items to the pivot table.
Example:
user_role
id user_id role_id 1 12 1 2 12 5 3 12 2
$user = User::find(12);
$user->roles()->sync(array(1, 2, 3));
The above operation will delete:
id user_id role_id 2 12 5
And insert role_id 3 to the table.
user_role table
id user_id role_id 1 12 1 3 12 2 4 12 3
这篇关于Laravel Eloquent - 附加与同步的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:Laravel Eloquent - 附加与同步
基础教程推荐
- 在PHP中根据W3C规范Unicode 2022-01-01
- Cron Jobs 调用带有变量的 PHP 脚本 2022-01-01
- PHP 类:全局变量作为类中的属性 2021-01-01
- 有什么方法可以用编码 UTF-8 而不是 Unicode 返回 PHP`json_encode`? 2021-01-01
- PHP PDO MySQL 查询 LIKE ->多个关键词 2021-01-01
- 如何在 Laravel 中使用 React Router? 2022-01-01
- 如何替换eregi() 2022-01-01
- YouTube API v3 点赞视频,但计数器不增加 2022-01-01
- 如何在 Laravel 5.3 注册中添加动态下拉列表列? 2021-01-01
- 学说 dbal querybuilder 作为准备好的语句 2022-01-01
