如何将雄辩的查询转换为数组

时间:2015-07-15 20:22:22

标签: laravel laravel-4 eloquent

我有以下雄辩的查询,该查询使用多对多关系来获取与经过身份验证的用户关联的所有组。

$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版)

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')