我想我的问题有一个简单的解决方案,我只是一个初学者: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"
}
]
答案 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