Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 拉威尔的关系是一成不变的_Php_Sql_Database_Laravel_Eloquent - Fatal编程技术网

Php 拉威尔的关系是一成不变的

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

我在Laravel应用程序中设置了以下数据库模式。为了简单起见,我只提到重要的专栏

任务

  • 工作证
工作

  • 客户识别码
用户

  • 身份证
在任务模型中,我希望有一个与用户表的关系方法,在本例中,它被称为中间
作业
表上的客户机(
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:select
users
*,
作业
客户端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');
}