Eloquent — сделайте запрос на запрос с совместным

Я хотел бы сделать этот запрос с Eloquent (в Laravel):

$user = User::find(1);
$product = $user->products()->where('id', 1)->first();

Но идентификатор столбца находится в таблице user И в таблице product, поэтому я получил ошибку (столбец неоднозначный). Я хочу использовать его без набора «products» в hard в коде (потому что имя таблицы может в конечном итоге измениться …).

Как решить это?

0

Решение

В этом случае вы можете использовать что-то вроде этого:

$id = 1;
$user = User::with(array('products' => function($q) use($id){

// You may use this
$table = $q->getRelated()->getTable();
$q->where("{$table}.id", $id);

// Or if this is a primary Key then you mau use this
$q->where($q->getRelated()->getQualifiedKeyName(), $id);

}))->find($id);

// Get the first product
$product = $user->products->first();
1

Другие решения

Вам нужно будет получить имя таблицы динамически. Увидеть этот вопрос для дальнейших деталей.

0

По вопросам рекламы [email protected]