2016-05-20 4 views
0

Это мой запрос:Laravel «где» запрос таблицы отношения

$items = UserItems::with('item') 
      ->where('user_id','=',$this->id) 
      ->where('quantity','>',0) 
      ->where('items.type','=',"shirt") 
      ->get(); 

мне нужны все пункты, где type является shirt.

Запрос возвращает это:

Column not found: 1054 Unknown column 'items.type' in 'where clause'

По некоторым причинам items не признается в качестве таблицы в этом запросе, и я не могу использовать `, где на него.

Тогда как я могу получить все пользовательские элементы, где тип элемента - shirt?

+0

ваша таблица называется 'элемент' или 'элементы'? если это так, измените -> с («item») на («items»), если нет, измените -> -> где ('items.type', '=', "shirt") в -> где (' item.type ',' = ', "shirt") – Carlos

+0

Я пробовал оба, он не работал – TheUnreal

ответ

1

Вы на самом деле нужно использовать whereHas, чтобы справиться с этим ...

$items = UserItems::with('item') 
     ->whereHas('item', function($q) { 
      $q->where('type', 'shirt'); 
     }) 
     ->where('user_id','=',$this->id) 
     ->where('quantity','>',0) 
     ->get(); 
0

Decision

Try:

$items = UserItems::with(['item' => function($query){ 
    return $query->where("type", "shirt") 
}) 
->where('user_id','=',$this->id) 
->where('quantity','>',0) 
->get(); 
Смежные вопросы