雄辩的一对一关系更新

时间:2018-03-11 14:51:45

标签: php mysql laravel eloquent

我想使用 Eloquent model 更新我的数据库中的记录。我在更新user_profile表格时遇到错误,where id is not null

用户模型

class User extends Model
{
    public function profile()
    {
        return $this->hasOne('App\Models\Common\UserProfile');
    }
}

UserProfile模型

class UserProfile extends Model
{
    public function user()
    {
        return $this->belongsTo('\App\Models\User');
    }
}

控制器

$user->fill($data);
$user->save();
$user->profile->fill($data);
$user->profile->save();

在MySQL查询中,它看起来像这样:

UPDATE users, user_profiles
SET users.name='Test Name',
user_profiles.email='test@gmail.com'
WHERE users.id=1
 AND user_profiles.user_id=1;

我知道MySQL查询,但我是Eloquent的新手,我希望在Eloquent model中执行此操作。也许这里有一些可以解释 magic Eloquent中如何运作。

1 个答案:

答案 0 :(得分:1)

默认情况下,eloquent假定任何模型都有id列作为主键。如果不是这样,你需要注册"主键

protected $primaryKey = 'user_id';

在模型类中。