我有以下雄辩的查询,该查询使用多对多关系来获取与经过身份验证的用户关联的所有组。
$usergr = Auth::User()->usergroup()->get();
数据透视表
ID|user_id|group_id
1 |1 |2
2 |1 |3
我想将其转换为group_id
数组。所以它是一个集合对象但是我需要将它转换为一个数组以用于另一个查询。
到目前为止,我有这个:
foreach ($usergr as $obj)
{
$array[]= (array) $obj;
}
我对数组的查询如下:
$usergrsub = DB::table('group_subjectlist')->whereIn('group_id', $array)
->select('subjectlist_id')
->distinct()->get();
但是上面的查询无法识别$array
变量
(我使用的是4.2版)
答案 0 :(得分:1)
Laravel的构建器返回的大多数结果对象都有一个toArray()
方法,可以将对象转换为数组。
whereIn
方法需要一个值数组,但get()
的结果将是一个对象集合,如果转换为数组将是一个关联数组的数组。
如果仅get()
查询需要whereIn
结果,则应使用lists('group_id')
代替get()
。否则请考虑使用pluck('group_id')
。
答案 1 :(得分:0)
在这种特殊情况下,lists()
函数可以执行您想要的操作。
Auth::User()->usergroup()->lists('group_id')