2016-07-15 2 views
0

У меня есть набор идентификаторов пользователей, которые я пытаюсь получить. Я использую следующий цикл foreach, но понимаю, что для каждого цикла он отменяет предыдущие данные.Laravel Получить коллекцию из массива идентификаторов

$users = DB::table('user_tags')->where('tag_name', $tag)->whereNotNull('user_id')->lists('user_id'); 
$users = array_unique($users); 

foreach ($users as $key => $value) 
{ 
    $users = User::where('id', $value)->get(); 
} 

Как это вернуть коллекцию со всеми пользователями в этом исходном массиве?

Спасибо!

ответ

7

Там более простой способ ..

$ids = DB::table('user_tags')->where('tag_name', $tag)->whereNotNull('user_id')->lists('user_id'); 
$users = User::whereIn('id', $ids)->get(); 
+0

Q - почему 'whereIn' в сравнении с' where'? –

+1

where = id | где in (массив идентификаторов) –

0

ли отношения между пользователями и теги многие ко многим? Если да, попробуйте выполнить следующие запросы:

User::whereHas('tags', function($query) use ($tag) { 
    $query->where('tag', $tag); 
})->pluck('id'); 
Смежные вопросы