2017-05-15 17 views
0
$demos = Demo::whereIn('store_id', [1,2,4], function($query){ 
        $query->where('status', 1); 
     })->paginate(10); 

これは機能していないことが分かりましたが、どうすればこのロジックで作業できますか?Laravel Eloquentクエリが機能しない

答えて

-1

時には、アプローチをORM`ish使用しないほうがよい[1,2,4でSTORE_IDとステータス= 1 'のデモ' SELECT * FROM]。
彼らは、古いプレーンSQLはあなたの親友だと言います。そう。

$data = \DB::select(
    \DB::raw("SELECT * FROM `demos` WHERE `store_id` IN (:id1, :id2, :id3)"), array(':id1' => 1, ':id2' => 2, ':id3' => 3) 
); 

それとも、あなたはstore_idエントリの未知の数、あなたは可能性がある場合:私はあなたがこのようなものが必要正しく理解していれば

$ids = array(1, 2, 3, 4, ...); // looks like unknown ammount of entries 
$data = \DB::select(
    \DB::raw("SELECT * FROM `demos` WHERE `store_id` IN (".rtrim(str_repeat('?,', count($ids)),',').")"), $ids 
); 
+0

ORMを使用しないほうが良い時期がありますが、これはその1つではありません。 Eloquentはこのクエリに完全に適しています。あなたの2番目の例は、Eloquent – jfadich

+0

で同じことを読むよりもはるかに読みにくいかもしれませんが、プレーンなSQLアプローチでは、好きなORMの目的のメソッドや関数についてドキュメントを検索する必要はありません。 –

2

を。

$demos = Demo::whereIn('store_id', [1, 2, 4])->where('status', 1)->paginate(10); 

連鎖「ここではEloquentメソッド==「AND」」データベースクエリ条件。

関連する問題