У меня следующие три таблицы:
A
-------------
| id | name |
-------------
B
--------------------
| id | A_id | name |
--------------------
C
--------------------
| id | B_id | name |
--------------------
Таким образом, данные в таблице C
относятся к данным в таблице B
, которые относятся к данным в таблице A
. Теперь я хочу запросить C
, а также получить данные из B
и A
, а следующий код очень трюк.
C::with('B.A')->get();
Теперь проблема заключается в том, что я хочу запросить C
с некоторыми ограничениями. Одним из этих ограничений является id
of A
. Я пробовал следующее:
C::with(array('B.A' => function ($query)
{
$query->where('id', '=', $constraint);
}))->get();
Но кажется, что Eloquent будет извлекать все строки в C
, даже не принимая во внимание ограничение, кроме случаев, когда он выполняет запрос для извлечения данных в таблице A
. Как мне обойти эту проблему? Мне нужно добавить другое поле в C
, то есть A_id
, и сопоставить $constraint
с этим полем?