一辆用户hasOne汽车。
用户
id | name
1 | Bob
2 | Alicecars
idMember | color | energy
1 | blue | 0.95在用户类中
public function car()
{
return $this->hasOne('App\Car','idMember');
}我想在这种关系模型上调用updateOrCreate:
$user->car()->updateOrCreate(['idMember' => $user->id], ['color' => 'red', 'energy' => '0.1']); 但是,我得到了错误消息。
"SQLSTATE42S22:列未找到:'where子句‘中1054个未知列'id’(SQL: update
carssetcolor= red,energy= 0.1,updated_at= 2018-01-12 15:26:47,其中id为null)
他为什么要找
id为空
发布于 2018-01-12 15:46:57
这就是我如何解决我的问题,而不添加一个不必要的自动增量id到汽车模型:
class Car extends Model
{
protected $primaryKey = 'idMember';
public $incrementing = false;发布于 2020-06-20 17:16:14
为了清楚起见,您的原始语法是正确的。您可以在关系中使用它:
$user->car()->updateOrCreate(['idMember' => $user->id], [
'color' => 'red',
'energy' => '0.1',
]);这将检查是否存在带有car的idMember === $user->id;如果存在,则更新color和energy。如果没有,它将使用idMember、color和energy创建一个color记录。
我还没有进行测试,但是根据第一个参数的数组类型,您应该能够传递多个匹配条件,例如
['idMember' => $user->id, 'day' => 'tuesday']发布于 2018-01-12 15:41:09
您的汽车型号应该有一个主键,通常称为"id“。创造它。
https://stackoverflow.com/questions/48229383
复制相似问题