我对Laravel有疑问。那我该怎么办呢?我试图从我的所有例子中获取位置。这实际上是有效的,所以你可以看到我得到所有例子的id并从我项目中的另一个表中找到它的位置。 foreach中的var_dump给出了我需要的东西。但是我需要在foreach之外的这些数据,之后我需要将它发送到我的视图中。但是第二个var_dump,foreach之外的那个只给出了第一个id的位置。
所以我的问题是:有没有办法在foreach之外获得完整的$位置。
$ids= DB::table('example')
->select('id')
->get();
foreach($ids as $id)
{
$locations = example::find($id->id)->locations()->get();
var_dump($locations);
}
var_dump($locations);
这是我的观点:
@foreach($examples as $example)
<h1>{{$example->name}}</h1>
@foreach($locations as $location)
{{$location}}
@endforeach
@endforeach
如果按照这样的方式打印,我会看到每个$示例中的$ examples的位置,我希望你理解我的问题。
答案 0 :(得分:3)
试试这个:
// Define locations array
$locations = [];
// Then do the following for each example:
// Define the array for locations of each example outside of the loop
$locations[$example->name] = [];
foreach ($ids as $id) {
// Add each location to the $locations array
$locations[$example->name][] = example::find($id->id)->locations()->get();
}
或者,如果您想要更加花哨一点,可以使用array_map代替foreach
:
$locations[$example->name] = array_map(function ($id) {
return example::find($id->id)->locations()->get();
}, $ids);
然后在视图中,您只需从每个示例的右键中取出位置:
@foreach ($examples as $example)
<h1>{{ $example->name }}</h1>
@foreach ($locations[$example->name] as $location)
{{ $location }}
@endforeach
@endforeach
您不必使用$example->name
作为密钥,只需确保它为您要为其获取位置的每个示例都是唯一的。
我希望这会有所帮助。
答案 1 :(得分:1)
无需构建$locations
数组。您可以在视图中使用该关系。
在您的控制器中:
// whatever your logic is to get the examples
$examples = example::with('locations')->get();
在您看来:
@foreach($examples as $example)
<h1>{{$example->name}}</h1>
@foreach($example->locations as $location)
{{$location}}
@endforeach
@endforeach