如何在Laravel 4中使用UPDATE或INSERT?

时间:2013-06-26 10:07:30

标签: php mysql sql laravel

我正在Laravel 4中构建一个应用程序,我需要运行多个查询作为UPDATE或INSERT查询,以避免重复插入时出现PK违规。我无法通过Laravel中的查询构建器找到任何方法。

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

3 个答案:

答案 0 :(得分:11)

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

答案 1 :(得分:9)

您可以使用DB :: statement。 http://laravel.com/docs/database

   DB::statement('INSERT INTO comments (comments) values (?)', array('LOL'));

你可以在那里打开DUPLICATE KEY UPDATE。

遗憾的是,除非你做了像

这样的事情,否则没有办法(我知道)这样做很有说服力
  $user = User::find(1);

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

答案 2 :(得分:4)

如果Fluent支持ON DUPLICATE KEY UPDATE或INSERT IGNORE,那将是非常好的但似乎不是。我找到的最接近的解决方案是在模型上使用firstOrCreate()。

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

如果不在某些情况下写出完整的查询,这可能会满足您的需求。