Php 在Laravel中的foreach循环外部获取变量
我有一个查询,它在我的blade视图上显示foreach循环中两个表的信息。这是控制器Php 在Laravel中的foreach循环外部获取变量,php,laravel,laravel-5,foreach,Php,Laravel,Laravel 5,Foreach,我有一个查询,它在我的blade视图上显示foreach循环中两个表的信息。这是控制器 public function details( $id ){ $details = Item::find($id)->report; return view('details', compact('details')); } 依我看,我有 @foreach($details as $itemDetails) .... @endforeach 是否可以在此查询中的每个
public function details( $id ){
$details = Item::find($id)->report;
return view('details', compact('details'));
}
依我看,我有
@foreach($details as $itemDetails)
....
@endforeach
是否可以在此查询中的每个变量之前显示
{{ $details->id }}
@foreach($details as $itemDetails)
....
@endforeach
我想获取$id。是的,您可以尝试以下方法:
$details[0]->id;
尝试理解这个概念,每次使用模型获取数据时,它都会返回一个对象数组,如:
array(
0 => stdClass Object,
1 => stdClass Object,
and so on
)
因此,为了访问数据,我们使用foreach()循环,或者您可以像上面那样直接调用索引
但如果您直接调用index,则使用isset()检查其存在性要获得
id
外部循环,因为如果我想从foreach循环中获得它,我需要将foreach放在一个div之外,然后由于循环而呈现多个div…您可以共享$details样本的结构吗?请显示{dd($details)}
如果您只需要第一个元素的id,那么您可以尝试类似于collect($details)->first()->id的方法
谢谢您的帮助。下面的答案是有效的。我只是想学习Laravel,有些东西还不太清楚。它总是建议不要使用硬编码索引,因为如果索引不存在,可能会中断available@CerlinBoss在你的情况下,在上面的评论中是不是相同或我错了?是的,强烈建议,我在更新的回答中提到了这一点。如果$details
没有记录,则会显示错误。尝试使用该索引检查数组是否存在,然后访问,尝试使用empty()
或isset()
函数进行检查。@VLS:在访问属性id
时,是的,但方法first()
不会抛出错误,相反,如果找不到项,它将返回false。所以一个简单的if条件会更好