Laravel Database Query返回对象集合 - 如何显示值?

时间:2017-07-05 18:34:56

标签: php laravel query-builder laravel-query-builder

我想我的问题有一个简单的解决方案,我只是一个初学者:D

在我的一个控制器上,我有一个相当复杂的DB请求(见下文),它返回一个对象集合而不是一个数组(我想我不能用Eloquent执行请求?)。现在我不知道如何在刀片页面中实际显示这些值?我是否必须以某种方式将其转换为数组才能做到这一点?

非常感谢!

TagsController.php的一部分:

$tags = DB::table('tags AS ta')
        ->select('ta.name')
        ->join('tag_thread AS tt', 'tt.tag_id', '=', 'ta.id')
        ->join(DB::raw('(select * from threads order by id desc limit 2000) th'), 'tt.thread_id', '=', 'th.id')
        ->groupBy('ta.name')
        ->orderBy(DB::raw('count(ta.name)'), 'DESC')
        ->limit(5)
        ->get();

返回$ tag:

[
    {
        "name": "javascript"
    },
    {
        "name": "jquery"
    },
    {
        "name": "php"
    }
]

5 个答案:

答案 0 :(得分:1)

使用pluck()获取数组中的特定列。

$tags = DB::table('tags AS ta')
        ->select('ta.name')
        ->join('tag_thread AS tt', 'tt.tag_id', '=', 'ta.id')
        ->join(DB::raw('(select * from threads order by id desc limit 2000) th'), 'tt.thread_id', '=', 'th.id')
        ->groupBy('ta.name')
        ->orderBy(DB::raw('count(ta.name)'), 'DESC')
        ->limit(5)
        ->pluck('name');

这将输出如下所示,只需在刀片中使用@foreach ()

[
    "name1",
    "name2",
    "name3",
]

答案 1 :(得分:0)

首先使用json_encode()从结果数据中获取json,然后使用json_decode()将json数据转换为数组。所以你的最终结果将是一个多维数组。

$tags=json_decode(json_encode($tags,true),true);

然后您可以将刀片中的数据打印为

@foreach ($tags as $tag)
    <div>{{ $tag['name'] }}</div>
@endforeach

答案 2 :(得分:0)

在您的刀片模板中,您可以通过以下方式循环访问它们:

@foreach ($tags as $tag)
    <div>{{ $tag->name }}</div>
@endforeach

答案 3 :(得分:0)

您可以在视图中使用@foreach语句来迭代集合

@foreach($tags as $tag)
    <li>{{ $tag->name }}</li>
@endforeach

答案 4 :(得分:0)

你可以用两种方式处理集合对象获取值,如下所示 - :

  @foreach($tags as $value)

{{$value->name}}

@endforeach

或者你可以使用toArray函数。只需将查询后的toArray函数放在

之后
     get()->toArray();

然后使用

    @foreach($tags as $value)

  {{$value['name']}}

     @endforeach