未找到列:1054未知列问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了未找到列:1054未知列问题相关的知识,希望对你有一定的参考价值。
我有一个有id,name,timestamps和其他字段的Account模型,我有一个有account_id和user_id字段的AccountUser模型,我有一个有用户id的User模型,我想用$this->hasManyThrough(AppUser,'AppAccountUser')->来获取账户的用户(账户有很多用户)。
我试图使用$this->hasManyThrough('AppUser', 'AppAccountUser')->get()来按账户获取用户(账户有很多用户);但我出现了一个错误SQLSTATE[42S22]。未找到列:1054 在'on子句'中的未知列'user.account_user_id'(SQL:select users
.*, account_users
.account_id
从 users
内接 account_users
关于 account_users
.id
= users
.account_user_id
哪儿 account_users
.account_id
= 1).
我不需要'user.account_user_id'列,但它在查询中,该怎么做?谢谢你。
- 你必须在模型中而不是在查询中定义关系。
- 对于这种情况,你应该使用hasOne属性。
- 你必须在模型中指定关系键。
// In the User class
public function account()
{
return $this->hasOne(UserAccount::class,'account_id','id');
}
然后调用关系与
$user->account();
请看 文件 .
hasManyThrough(作为所有关系)有一个默认值,如果你什么都不放的话。
hasManyThrough('AppUser', 'AppAccountUser')
它从Models的名字中得到默认值create。
从文档中可以看出,它的默认值是创建自Models的名称。
传递给hasManyThrough方法的第一个参数是我们希望访问的最终模型的名称,而第二个参数是中间模型的名称。
在执行关系的查询时,将使用典型的Eloquent外键约定。如果你想自定义关系的键,你可以将它们作为第三个和第四个参数传递给hasManyThrough方法。第三个参数是中间模型上的外键的名称。第四个参数是最终模型上的外键的名称。第五个参数是本地键,而第六个参数是中间模型的本地键。
参见文档:https:/laravel.comdocs7.xeloquent-relationships#has-many-though。
以上是关于未找到列:1054未知列问题的主要内容,如果未能解决你的问题,请参考以下文章
未找到列:1054“where 子句”中的未知列“MONTH(date)”[重复]