对于laravel中的每个循环?

对于laravel中的每个循环?,laravel,laravel-4,Laravel,Laravel 4,我尝试在同一个视图中循环不同的数据,有时数据如下所示: [{"id":"3","title":"Collection C","short_title":"CC","looks":[{"id":"6","title":"Look 6","image":null,"sell":null,"description":null,"sort":null,"published":"1","pivot":{"collection_id":"3","look_id":"6"}},{"id":"7","title

我尝试在同一个视图中循环不同的数据,有时数据如下所示:

[{"id":"3","title":"Collection C","short_title":"CC","looks":[{"id":"6","title":"Look 6","image":null,"sell":null,"description":null,"sort":null,"published":"1","pivot":{"collection_id":"3","look_id":"6"}},{"id":"7","title":"Look 7","image":null,"sell":null,"description":null,"sort":"1","published":"1","pivot":{"collection_id":"3","look_id":"7"}}]},{"id":"1","title":"Collection A","short_title":"CA","looks":[{"id":"2","title":"Look 2","image":null,"sell":null,"description":null,"sort":"0","published":"1","pivot":{"collection_id":"1","look_id":"2"}}]}]
{"id":"1","title":"Collection A","thumb":null,"banner":null,"video":"ftfgf","looks":[{"id":"2","title":"Look 2","image":null,"sell":null,"description":null,"sort":"0","published":"1","url":"test","pivot":{"collection_id":"1","look_id":"2"}}]} BESbswyBESbswyBESbswyBESbswyBESbswyBESbswyBESbswyBESbswyBESbswyBESbswyBESbswyBESbswyBESbswyBESbswyBESbswyBESbswy
其他时候看起来是这样的:

[{"id":"3","title":"Collection C","short_title":"CC","looks":[{"id":"6","title":"Look 6","image":null,"sell":null,"description":null,"sort":null,"published":"1","pivot":{"collection_id":"3","look_id":"6"}},{"id":"7","title":"Look 7","image":null,"sell":null,"description":null,"sort":"1","published":"1","pivot":{"collection_id":"3","look_id":"7"}}]},{"id":"1","title":"Collection A","short_title":"CA","looks":[{"id":"2","title":"Look 2","image":null,"sell":null,"description":null,"sort":"0","published":"1","pivot":{"collection_id":"1","look_id":"2"}}]}]
{"id":"1","title":"Collection A","thumb":null,"banner":null,"video":"ftfgf","looks":[{"id":"2","title":"Look 2","image":null,"sell":null,"description":null,"sort":"0","published":"1","url":"test","pivot":{"collection_id":"1","look_id":"2"}}]} BESbswyBESbswyBESbswyBESbswyBESbswyBESbswyBESbswyBESbswyBESbswyBESbswyBESbswyBESbswyBESbswyBESbswyBESbswyBESbswy
我通过以下方式循环:

@foreach($data as $show)
{{ $show->title }}
@endforeach
第二组数据打破了我的循环,这是因为它本身不在数组中,如果是这样,我如何将它放入数组中,使其成为唯一的元素


还是有更好的方法来解决这个问题?

在开始循环之前,我会做一些检查,看看它是第一类数据还是第二类数据

@if (is_array($data))
    @foreach($data as $show)
    {{ $show->title }}
    @endforeach
@else
    {{-handle it as an object-}}
@endif

这是因为您使用的是对象而不是数组

有一件事你应该问问自己,为什么你最终会遇到
$data
可以是一个对象或数组的情况

在我看来,您的代码应该更加健壮。如果您知道您正在对
$data
执行
foreach
,那么您应该强制执行它始终是一个数组,否则您将陷入一片混乱

如果你不能更改源代码,你可以在开始之前做类似的事情

<?php if(!is_array($data)) $data[] = $data; ?>

您的控制器应该始终确保数据是一个数组,而不是单个条目shouldnt@panthro它应该——你的观点应该能够依赖于某些事物是不变的。如果你从一个给定的来源得到不同的东西,你的控制器应该为你的视图使它正常化。一般来说,视图应该包含尽可能少的逻辑。它总是在我的数组中返回“else”。我认为你从未使用过laravel?我倾向于同意,确保视图中有一致的数据可能是最好的方法。我认为@panthro的困惑在于你的if缺少刀片格式。那么,在传递到我的视图之前,我应该在我的模型中使用->toArray()吗?返回$this->with(数组('looks'=>函数($query){$query->wherePublished(1)->orderBy('sort')->take(3)->skip(0);}->find($id,数组('id',title',thumb',banner',video'))->toArray();啊,您正在使用find()。它总是产生一个对象。