Php 拉威尔的关系是一成不变的
我在Laravel应用程序中设置了以下数据库模式。为了简单起见,我只提到重要的专栏 任务Php 拉威尔的关系是一成不变的,php,sql,database,laravel,eloquent,Php,Sql,Database,Laravel,Eloquent,我在Laravel应用程序中设置了以下数据库模式。为了简单起见,我只提到重要的专栏 任务 工作证 工作 客户识别码 用户 身份证 在任务模型中,我希望有一个与用户表的关系方法,在本例中,它被称为中间作业表上的客户机(Client\u id) 在我的代码中,我希望能够引用$task->client() 我查阅了这些文件,发现: public function client() { return $this->belongsToMany('App\User', 'users
- 工作证
- 客户识别码
- 身份证
作业表上的客户机(Client\u id
)
在我的代码中,我希望能够引用$task->client()代码>
我查阅了这些文件,发现:
public function client()
{
return $this->belongsToMany('App\User', 'users', 'client_id');
}
返回:
“SQLSTATE[42S22]:未找到列:1054未知列'jobs.user_id'
在“字段列表”(SQL:选择用户
*,作业
客户端id
作为
pivot\u-client\u-id
,jobs
user\u-id
作为pivot\u-user\u-id
来自users
内部联接作业
在用户
上
id
=作业
用户id
其中
作业
客户端id
=112和用户
已删除
处为空)
或
返回:
“SQLSTATE[42S22]:未找到列:1054未知列
“on子句”中的“users.user_id”(SQL:selectusers
*,
作业
客户端id
作为laravel\u通过_键
从用户
内部连接
作业
上的作业
id
=用户
用户id
其中作业
在
处被删除
null和作业
客户端id
=111,并且用户
已删除
处的作业为null
限制1“
如何从
任务
模型中检索用户
模型?能否尝试以下操作:
public function client()
{
return $this->hasOneThrough('App\User', 'App\Job', 'id', 'id', 'id', 'client_id');
}
对于仍在寻找有效答案的人: 在您的
任务中
模型类:
公共功能客户端()
{
返回$this->hasOneThrough(
用户::类,//Laravel 8中的“App\User”或“App\Models\User”
Job::class,在Laravel 8中为“//”App\Job”或“App\Models\Job”
“id',//作业表上的外键…不幸地返回null可能是使用DB::enableQueryLog();
和DB::getQueryLog()的最佳方法
然后,您可以确定生成的查询的哪一部分是错误的。我测试了我的解决方案,测试内容如下:任务
属于作业
,属于用户
public function client()
{
return $this->hasOneThrough('App\User', 'App\Job', 'id', 'id', 'id', 'client_id');
}