【发布时间】:2023-03-20 07:15:01
【问题描述】:
基本上我只是想在这个请求中添加一个 where 条件,在那里我得到一个带有一堆孩子的“阶段”(我把它做了一点):
public function show($projectId, $phaseId)
{
return Phase::with('headers.subheaders.lines.values')->findOrFail($phase);
}
我想做这样的事情:
public function show($projectId, $phaseId)
{
return Phase::with('headers.subheaders.lines.projectValues')
->where('headers.subheaders.lines.projectValues.project_id', '=' , $projectId)
->findOrFail($phaseId);
}
我尝试了各种变体:
return Phase::with(['headers.subheaders.lines.projectValues' => function ($query) use ($projectId) {
$query->where('project_id', $projectId);
}])->findOrFail($phaseId);
但我找不到让其正常工作的神奇语法组合。我通常会收到错误,即 project_id 不是最后一个示例的阶段属性...我尝试给它两次完整路径,但它似乎不喜欢它...也许我只是愚蠢和有一个简单的解决方案...
编辑:
一些关系:
class Line extends Model
{
// Other stuff
public function projectValues()
{
return $this->hasMany(ProjectValues::class, 'question_id');
}
}
class QuestionValue extends Model
{
// Other stuff
public function project()
{
return $this->belongsTo(Project::class);
}
public function line()
{
return $this->belongsTo(Line::class);
}
}
【问题讨论】:
-
您好 Ben,请添加 Phase 模型和 Project 的关系。
-
阶段和项目没有关系,只是树末尾的值
-
一行有很多 ProjectValues 但我只想要 Phase 中与我的变量(当前项目)相对应的 ProjectValues @AliAli