Php 如何将更新或插入与Laravel 4一起使用?

Php 如何将更新或插入与Laravel 4一起使用?,php,mysql,sql,laravel,Php,Mysql,Sql,Laravel,我正在Laravel4中构建一个应用程序,我需要以更新或插入查询的形式运行几个查询,以避免重复插入的PK冲突。我还没有找到任何方法来使用Laravel中的查询生成器实现这一点 我可以修改DB类或类似的东西吗?还是只需要编写纯SQL语句?您可以使用DB::语句 你可以在那里设置重复的密钥更新 不幸的是,除非你做一些像这样的事情,否则(据我所知)用雄辩的语言是无法做到这一点的 $user = User::find(1); if ($user === null) { $user

我正在Laravel4中构建一个应用程序,我需要以更新或插入查询的形式运行几个查询,以避免重复插入的PK冲突。我还没有找到任何方法来使用Laravel中的查询生成器实现这一点


我可以修改DB类或类似的东西吗?还是只需要编写纯SQL语句?

您可以使用DB::语句

你可以在那里设置重复的密钥更新

不幸的是,除非你做一些像这样的事情,否则(据我所知)用雄辩的语言是无法做到这一点的

  $user = User::find(1);

  if ($user === null) {
       $user = new User;
  }
  $user->name = 'hey'; 
  $user->save();

这将是非常好的,如果流畅的支持重复密钥更新或插入忽略,但它似乎没有。我找到的最接近的解决方案是在模型上使用firstOrCreate()

User::firstOrCreate( array('id'=>1, 'name'=>'hey') );

在某些情况下,这可以完成您需要的操作,而无需写出完整的查询。

现在我们可以使用
User::updateOrCreate()

太棒了!他失踪了。
User::firstOrCreate( array('id'=>1, 'name'=>'hey') );