php - 防止 Laravel 向数据透视表添加多条记录

标签 php laravel laravel-4 eloquent

我建立了多对多关系并且正在工作,以便将商品添加到我使用的购物车:

$cart->items()->attach($item);

这会将一个项目添加到数据透视表(应该如此),但是如果用户再次单击链接以添加他们已经添加的项目,则会在数据透视表中创建一个重复的条目。

是否有一种内置方法可以仅在数据透视表不存在时才将记录添加到数据透视表中?

如果没有,如何检查数据透视表以查找匹配记录是否已存在?

最佳答案

您还可以使用 $model->sync(array $ids, $detaching = true) 方法并禁用分离(第二个参数)。

$cart->items()->sync([$item->id], false);

更新: 从 Laravel 5.3 或 5.2.44 开始,你也可以调用 syncWithoutDetaching:

$cart->items()->syncWithoutDetaching([$item->id]);

完全一样,但更具可读性:)

关于php - 防止 Laravel 向数据透视表添加多条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17472128/

相关文章:

php - 通过 C++ 桌面应用程序发送发布请求

php - 转换从数据库中检索到的日期时间

php - 如何创建一个以用户名作为子域名的子域?

php - Laravel的上下迁移方法如何工作?

javascript - 使用 Laravel 进行排序的 jQuery UI 将不会提交

php - Laravel Eloquent 检查日期是否与数据库中的日期不相等

php - Laravel 路线,具有 1 个必需参数和可选的无限参数

php - header 在带有 JS 输出的 PHP 文件上过期

php - 如何更新从 Laravel 中的 N 到 N 关系创建的表的外键?

php - 中间表和 Laravel