【发布时间】:2020-12-15 08:11:14
【问题描述】:
我有这个问题:
$answers = AnswerVersion::query()->with(['answer' => function($q) use ($project) {
$q->where(['project_id' => $project->id]);
}]);
我想添加修改它以仅返回实际具有 answer 关系的 AnswerVersion 结果。现在它只在存在答案关系时查询 project_id 匹配,否则忽略该查询并返回 AnswerVersion 无论如何。有没有办法我可以在回调中做到这一点,或者基本上是关系上的whereNotNull?我无法翻转查询,因为我需要从 CSV 报告的 AnswerVersion 关系中获取它,所以我知道来自 Answer -> AnswerVersion 其中 project_id 是匹配项最有意义的 SQL 方式。但是,这不适用于此报告,因为每个 AnswerVersion 都需要一行,其中包含 Answer 信息。原始 SQL 查询看起来像这样:
SELECT
*
FROM
answer_versions AS AV
INNER JOIN
answers AS A
ON AV.answer_id = A.id
WHERE
A.project_id = 1;
【问题讨论】:
-
请改用
whereHas。如果您想提出 aswer 关系,请查看此stackoverflow.com/questions/29591931/…
标签: mysql laravel eloquent eloquent-relationship laravel-6.2