2016-07-04 106 views
1

我可以做以下电话elequent调用中使用in_array

$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();