Laravel updateOrCreate具有自动增量数据库

时间:2014-12-15 07:38:18

标签: mysql laravel eloquent

我的目的是在值存在时更新,否则在提交表单后在数据库表中插入新行

问题是,此处的函数在数据库表中添加新列,而不是更新它们。

这是我的功能:

MyModel::updateOrCreate(array(
    'myField' => 'myValue',
))
    ->where('myAutoIncrementalField', '=', '5')
    ->where('myPrimaryKey', '=', '8');

我的数据库表是这样的:
1. myPrimaryKey(不是自动增量,可在模型上填写。)
2. myAutoIncrementalField(自动增量,不能在模型上填充。)

提前谢谢。

2 个答案:

答案 0 :(得分:23)

这是您使用此方法的方法:

Model::updateOrCreate(
   ['primary_key' => 8],
   ['field' => 'value', 'another_field' => 'another value']
);

当第一个参数传递一个唯一的字段数组,或者在您的情况下,传递主键。非独特的领域在这里显然没有意义,就像传递PK一样。

第二个参数是一个值数组,应该更新/创建,但在unique / pk搜索中被忽略。

答案 1 :(得分:1)

您无法使用此方法的函数。您必须在数组中包含where子句。

MyModel::updateOrCreate(array(
    'myField' => 'myValue',
    'myAutoIncrementalField' => '5',
    'myPrimaryKey' => '8'
));