Laravel-尝试保存数据时insert语句中的列会发生更改

Laravel-尝试保存数据时insert语句中的列会发生更改,laravel,eloquent,Laravel,Eloquent,我正在从事一个Laravel项目,在尝试保存数据时遇到了一个问题。以下是我收到的错误消息: SQLSTATE[42S22]:未找到列:1054“字段列表”中的未知列“用户\用户\ id”SQL:插入链接\用户\帐户\帐户\ id,用户\用户\ id,更新\位置,创建\位置值1,62019-12-30 20:32:542019-12-30 20:32:54 我希望看到以下insert语句: 在链接\u user\u account\u id、user\u id值val1、val2中插入 但是在这种

我正在从事一个Laravel项目,在尝试保存数据时遇到了一个问题。以下是我收到的错误消息:

SQLSTATE[42S22]:未找到列:1054“字段列表”中的未知列“用户\用户\ id”SQL:插入链接\用户\帐户\帐户\ id,用户\用户\ id,更新\位置,创建\位置值1,62019-12-30 20:32:542019-12-30 20:32:54

我希望看到以下insert语句:

在链接\u user\u account\u id、user\u id值val1、val2中插入

但是在这种情况下,用户id不知何故被重命名为用户id

模型

账户 使用者 链接帐户用户 用户控制器:

用户模型关系

账户模型关系

LinkUserAccount关系

在LinkUserAccount模型上,删除另一个密钥的用户id:

public function user()
{
     return $this->belongsTo(User::class); // It will automatically go to id on User
}

按照您的方式,在另一个关键参数中使用user_id,它告诉Laravel在用户模型上查找user_id,而不是id,这与将帐户id作为FK和稍微不寻常的命名约定LinkUserAccount相结合,可能把它弄糊涂了,以至于要查找用户id。

之所以会这样,是因为雄辩将用户添加到id中。
在我的例子中,我解决了这个问题,只需将表的主键改为“id”

谢谢您的回复,我根据您的建议修改了代码,并在用户模型中编辑:protected$primaryKey back to id”。我把它作为受保护的$primaryKey=user_id。它现在似乎在工作。我很高兴它对我有帮助并解决了这个问题。请点击我答案上投票箭头下方的复选标记接受答案。
public function link_user_account()
{
    return $this->hasOne(LinkUserAccount::class);
}
public function link_user_account()
{
    return $this->hasOne(LinkUserAccount::class);
}
public function user()
{
    return $this->belongsTo(User::class, 'account_id', 'user_id');
}

public function account()
{
    return $this->belongsTo(Account::class, 'account_id');
}
public function user()
{
     return $this->belongsTo(User::class); // It will automatically go to id on User
}