Ada*_*dam 4 php eloquent laravel-5
一个用户有一辆汽车。
用户
id | name
1 | Bob
2 | Alice
Run Code Online (Sandbox Code Playgroud)
汽车
idMember | color | energy
1 | blue | 0.95
Run Code Online (Sandbox Code Playgroud)
在用户类里面我有
public function car()
{
return $this->hasOne('App\Car','idMember');
}
Run Code Online (Sandbox Code Playgroud)
我想像这样在关系模型上调用 updateOrCreate :
$user->car()->updateOrCreate(['idMember' => $user->id], ['color' => 'red', 'energy' => '0.1']);
Run Code Online (Sandbox Code Playgroud)
但是,我收到错误消息
"SQLSTATE[42S22]: Column not found: 1054 Unknown column 'id' in 'where clause' (SQL: update
cars
setcolor
= red,energy
= 0.1,updated_at
= 2018-01-12 15:26:47 whereid
is null)
他为什么要找
id
一片空白
?
需要明确的是,您的原始语法是正确的。您可以在关系上使用它:
$user->car()->updateOrCreate(['idMember' => $user->id], [
'color' => 'red',
'energy' => '0.1',
]);
Run Code Online (Sandbox Code Playgroud)
这将检查是否有car
with idMember === $user->id
; 如果是这样,更新color
和energy
。如果没有,它将创建一个car
记录idMember
,包括color
、 和energy
。
我没有测试过,但是根据第一个参数的数组类型,你应该可以传入多个匹配条件,比如
['idMember' => $user->id, 'day' => 'tuesday']
Run Code Online (Sandbox Code Playgroud)
这就是我解决问题的方法,而无需向汽车模型添加不必要的自动递增 id:
class Car extends Model
{
protected $primaryKey = 'idMember';
public $incrementing = false;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9925 次 |
最近记录: |