2016-07-04 4 views
1

я могу сделать следующий вызовИспользование in_array в elequent вызова

$userGroups = Auth::user()->getGroups(); 

выше выход будет что-то вроде следующего

array:10 [▼ 
    0 => "Admin" 
    1 => "TeamA" 
    3 => "USA" 
    4 => "security" 
    9 => "Users" 
] 

Так что я могу видеть, что я являюсь членом все вышеперечисленное групп. У меня также есть таблица клиентов, и одно из полей этой таблицы - команда. Пример клиент, как так

#attributes: array:11 [▼ 
    "id" => "3" 
    "clientName" => "Some Client" 
    "contactEmail" => "" 
    "team" => "TeamA" 
    "created_at" => "2016-07-04 15:08:15" 
    "updated_at" => "2016-07-04 15:08:15" 
] 

То, что я пытаюсь сделать, это получить все клиенты, которые имеют команду, которая является частью зарегистрированного в группах пользователей. Таким образом, вы можете видеть, что я отдельно от TeamA, поэтому мне нужны все клиенты , которые имеют командную ценность TeamA. Я думал что-то вдоль линий этого

$clients = Client::where('team', in_array('TeamA', $userGroups))->get(); 

Вышеприведенные возвращает результат в виде пустой набор, но, надеюсь, это показывает, что я после.

Как я могу это достичь?

Благодаря

+0

Это звучит как что следует использовать '-> где()' красноречивую оговорку. Ознакомьтесь с документацией здесь: https://laravel.com/docs/5.1/queries#where-clauses –

ответ

2

Это звучит так, как будто вы ищете whereIn:?

$clients = Client::whereIn('team', $userGroups)->get(); 
+1

Спасибо, что нашли эту опечатку! –

+0

Отлично, именно то, что я был после. Одна вещь, хотя, вы сделали стрелку после :: Спасибо –

1

Похоже, вы просто хотите просто «где»?

$clients = Client::where('team', 'TeamA')->get(); 

Вы получите всех клиентов, имеющих команду «TeamA».

Если вы хотите, чтобы все клиенты для нескольких групп, используйте «где»:

$clients = Client::whereIn('team', $userGroups)->get(); 
Смежные вопросы