我想通过hasManyThrough关系获得相关的客户名称



我需要在视图上打印客户端的名称,该名称通过称为projects的临时关系引用其项目的任务。

我使用了hasManyThrough关系,因为我需要获得更多信息。现在我需要获得如上所述的客户端名称。

客户模型中定义的关系:

public function projects()
{
return $this->hasMany(Project::class);
}
public function tasks()
{
return $this->hasManyThrough(Task::class, Project::class);
}

项目模型中定义的关系:

public function client()
{
return $this->belongsTo(Client::class);
}
public function tasks()
{
return $this->hasMany(Task::class);
}

任务模型中定义的关系:

public function project()
{
return $this->belongsTo(Project::class);
}

我试过了,但无法获得客户端名称

任务控制器:

public function index($id = NULL)
{
$tasks = Task::all();
$project = Project::find($id)->load(['tasks']);     
return view('task.index', compact('tasks','project'));
}

在该任务的任务视图中,我希望看到以下行:

"与任务相关的项目列表(客户名称(";

有谁能好心帮我吗?


客户端id-整数name字符串

项目id-integerclient_id-整数name字符串

任务id-整数project_id-整数title字符串

如果我理解正确,您需要首先在任务模型上添加一个关系:

public function client()
{
return $this->hasOneThrough(Client::class, Project::class);
}

此关系将允许您获取包含此任务的项目所属的客户端。然后在你的任务控制器上:

public function index($id = NULL)
{
$tasks = Task::with(['project', 'client'])->get();
$project = Project::find($id)->load(['tasks']);     
return view('task.index', compact('tasks','project'));
}

现在$tasks将包含项目信息+客户信息

最新更新