2017-01-05 7 views
1

я сделать запрос с elequent у меня есть проблемы с whereIn пункта, если массив пуст он не возвращает результат:Laravel 4.2 Проверка пустой массив в, где положение

$idsUsers = empty(json_decode($data["idsUsers"])) ? null : json_decode($data["idsUsers"]); 
$articles = DB::table('articles') 
     ->whereIn('user_id',$idsUsers) 
     ->orderBy('created_at','desc') 
     ->paginate(10); 

Как я могу использовать массив в METHODE, где проверку, если он не пустой или нулевой

+0

Laravel 4 или 5.2, они имеют много diferences делают запросы. – Troyer

+0

Laravel 4.2 ... – AiD

ответ

1

попробуйте использовать условное:

$articles = DB::table('articles')->orderBy('created_at','desc'); 

if (!empty($idsUsers)) { 
    $articles = $articles->whereIn('user_id', $idsUsers); 
} 

$articles = $articles->paginate(10); 
+0

этот запрос возвращает коллекцию stdclass .. могу ли я отнести эту коллекцию к объекту Article? – AiD

+0

Несомненно. Просто замените 'DB :: table ('articles') ->' на 'Article ::' –

+1

Большое вам спасибо ... он отлично работает – AiD

0

Вы можете попробовать это

$idsUsers = empty(json_decode($data["idsUsers"])) ? null : json_decode($data["idsUsers"]); 

$articles = DB::table('articles') 
       ->where(function($query) use ($idsUsers){ 
       if(count($idsUsers)) 
       { 
        $query->whereIn('user_id',$idsUsers); 
       } 
       })->orderBy('created_at','desc')->paginate(10); 

Надеется, что это поможет