Я хотел бы сделать этот запрос с Eloquent (в Laravel):
$user = User::find(1);
$product = $user->products()->where('id', 1)->first();
Но идентификатор столбца находится в таблице user И в таблице product, поэтому я получил ошибку (столбец неоднозначный). Я хочу использовать его без набора «products» в hard в коде (потому что имя таблицы может в конечном итоге измениться …).
Как решить это?
В этом случае вы можете использовать что-то вроде этого:
$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();
Вам нужно будет получить имя таблицы динамически. Увидеть этот вопрос для дальнейших деталей.