查询构建器获取结果数组而不是Laravel中的对象

时间:2015-05-11 18:28:59

标签: php laravel query-builder

这是我的查询

DB::table('genres')
        ->join('albumGenres', 'genres.id', '=', 'albumGenres.genre_id')
        ->join('albums', 'albumGenres.album_id', '=', 'albums.id' )
        ->select('genres.id')
        ->where('albumGenres.album_id','=',$this->id)->get();

但我得到这样的东西

"genre_id": [
        {
            "id": "4"
        },
        {
            "id": "8"
        }
    ]

我该怎么做才能将结果只作为一个数组

"genre_id" : [4,8]

2 个答案:

答案 0 :(得分:5)

只需使用->lists('id')代替->get()

DB::table('genres')
    ->join('albumGenres', 'genres.id', '=', 'albumGenres.genre_id')
    ->join('albums', 'albumGenres.album_id', '=', 'albums.id' )
    ->where('albumGenres.album_id', '=', $this->id)
    ->lists('genres.id');

阅读更多内容:http://laravel.com/docs/5.0/queries#selects(检索列值列表部分)

答案 1 :(得分:3)

使用新版本的Laravel,你应该使用pluck()而不是lists()。

DB::table('genres')
->join('albumGenres', 'genres.id', '=', 'albumGenres.genre_id')
->join('albums', 'albumGenres.album_id', '=', 'albums.id' )
->where('albumGenres.album_id', '=', $this->id)
->pluck('genres.id');

以下是文档中的参考:https://laravel.com/docs/5.4/queries#retrieving-results(参见“检索列值列表”)