排除具有特定 ID 的行的正确语法是什么,但在相关 table 中缺少一行,该行的列中有一个值?

What is the proper syntax to exclude rows that have a specific ID, but lack a row in a related table with a value in a column on that row?

目前正在努力让我的头脑围绕事物的顺序,一开始甚至没有 laravel,但是 sql。虽然最终目标是使用 eloquent.

需要排除的行有2个条件。如果我从 TableA 中获取行..

1) 具有列 status_id(或 TableC.id)的表 A 必须具有值 1。

2) TableB 必须有一个 TableA.id 的实例,其中 status_id(或 TableC.id)可以说是 2.

一段时间以来一直在查看 whereNotIn、whereExists 和 when,但我无法理解什么是正确的情况以及它应该是什么样子。

仍在了解 sql 查询,非常感谢您提供有关此难题的任何提示。

对此的原始 SQL 查询可能是:

SELECT a.*
FROM TableA a
WHERE status_id = 1 AND
      EXISTS (SELECT 1 FROM TableB b WHERE b.a_id = a.id AND b.status_id = 2);

您从未发布过任何 Laravel/PHP 代码,因此我不确定尝试在 Laravel 中提供任何代码是否会有帮助。您可以将 Laravel 代码基于上述查询。