// This comes in as an array - item_category[]
$category = \Request::input('item_category');
Item::with('category')
->when($category, function($q) use ($category) {
$q->whereHas('category', function($q) use ($category) {
$q->whereIn('category', $category);
});
})->get();
こんにちは、カテゴリが通過するカテゴリのすべてのアイテムを取得しようとしています。ただし、カテゴリはフィルタであり、ユーザはこれをチェックすることもできないこともあります。したがって、when節はモデルにチェーンされます。ユーザーがitem_categoryチェックボックスのいずれかをチェックしない場合は、それがあることから、クエリが0の結果を返します以外のコードは、現在、私はLaravel - Laravelとネストされたリレーションシップをクエリします。
Item::with('category')
->whereHas('category', function($q) use ($category) {
$q->whereIn('category', $category);
})->get();
を行う場合、これは動作しますエラー
Column not found: 1054 Unknown column 'has' in 'where clause' (SQL: select * from `items` where `has` = category)
をスローしますこの値が通過することを期待しています。 私は本当にここで何をするのか分からない。何かアドバイス。 よろしく、
項目テーブル
id category_id title description price timestamps
カテゴリテーブル
id category
Item.php
public function category()
{
return $this->belongsTo('App\Category', 'category_id');
}
元のテーブルと最終的なMySQLクエリを表示してください。 –
更新を確認してください –
もう一度、必要な生のMySQLクエリを表示することを検討する必要があります。 –