【发布时间】:2014-10-15 13:51:27
【问题描述】:
我有一对多关联用户 -> 页面,我有这个代码:
$user_id = Auth::user()->id;
foreach ($pages_array['data'] as $page) {
$page_record = new Page();
$page_record->name = $page->name;
$page_record->access_token = $page->token;
$page_record->page_id = $page->id;
User::find($user_id)->pages()->save($page_record);
}
但是当我尝试插入它们时,我得到 SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry...
我的问题是:如果数据库中的记录不存在,我如何插入记录并在存在时跳过插入?非常感谢
p.p 对不起我的不好。
【问题讨论】:
-
您的
page_id是自增字段吗? -
不,不是。默认情况下 id 是自动递增的
-
如果您预计会发生这种情况并且没有办法解决它没有发生的情况,那么您可以将其放入 try catch 块中。另外,请随时使用
Auth::user()->pages()->save($page_record)。它将为您节省对数据库的调用。 -
谢谢。而且我不希望这种情况发生。我只想插入一条不重复的记录
-
那并没有多大意义,因为如果它是一对多的,那么您期望许多页面具有重复的 user_id。您是否偶然在该列上放置了唯一索引?
标签: php mysql sql laravel eloquent