我的目的是在值存在时更新,否则在提交表单后在数据库表中插入新行。
问题是,此处的函数在数据库表中添加新列,而不是更新它们。
这是我的功能:
MyModel::updateOrCreate(array(
'myField' => 'myValue',
))
->where('myAutoIncrementalField', '=', '5')
->where('myPrimaryKey', '=', '8');
我的数据库表是这样的:
1. myPrimaryKey(不是自动增量,可在模型上填写。)
2. myAutoIncrementalField(自动增量,不能在模型上填充。)
提前谢谢。
答案 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'
));