在我的Laravel项目中,我试图从数据库中显示一些数据。从多个表中查找数据。结构如下所示:
小组(例如姓名=" G1")
小组(例如姓名=" G2")
Group,Book,Pencil&墨水是Eloquent / Model类。我可以很好地查找数据(具有表之间的所有关系)。现在,我想将这些数据发送到Laravel视图php,以便它可以显示。在视图php中,将显示具有组名称的组的下拉元素(例如" G1"或" G2"),因此如果用户选择" G1&# 34;,页面应显示所有G1相关信息(例如B1,P1,I1)和" G1",它的相关信息。默认情况下(或在页面加载时),应显示列表中的第一个组及其相关信息。
我想知道我应该如何打包数据(我相信是一些数组)并在视图中使用它?还有如何在组下拉列表中更改选择时更新视图?
非常感谢!
答案 0 :(得分:1)
在您的控制器方法
中$groupOne = Group::where()->get(); // Your Group One Query, Whatever It May Be
$groupTwo = Group::where()->get(); // Your Group Two Query, Whatever It May Be
return view('pathTo.someView', compact('groupOne', 'groupOne'));
您将能够在刀片模板中循环显示这些内容。例如:
@foreach( $groupOne as $item )
@endforeach
@foreach( $groupTwo as $item )
@endforeach
如果要根据下拉列表的更改来更改页面的视图/内容,则必须使用JavaScript。 Laravel开箱即用VueJS。我建议从那里开始动态改变内容。
答案 1 :(得分:1)
为每个模型提供一个变量,并将其传递给view方法。这是第二个论点:我使用compact('customerModel', 'staffModel')
;看起来更干净。
答案 2 :(得分:0)
首先,您使用雄辩的查询收集所需的数据:
$groups= \App\Group::where('')->get();
此方法返回带有一堆辅助方法的Collection类。如果您想要单个实例,请使用 - > first()代替。
然后,您可以将数据传递到第二个参数中的视图,如下所示:
return view('myview', [
'groups' => $groups
]);
最后,您可以使用刀片模板指令在视图文件中呈现列表:
<select>
@foreach($groups as $group)
<option>{{$group->book->attribute}}</option>
@endforeach
</select>
要动态更新下拉列表选项,您需要使用动态JavaScript来显示相关的下拉列表。如果您有很多组或其他模型,则在更改选择时,您应该只使用ajax一次获取一个组。使用ajax动态加载列表时,可以使用blade指令呈现初始列表但不能依赖它来更新视图,因为blade是服务器端呈现引擎,并且在视图之后无法动态更改它的内容已被发送到客户端。
答案 3 :(得分:0)
$groupOne = Group::where()->get();
$groupTwo = Group::where()->get();
我们可以在1或2时使用此命令
return view('pathTo.someView', compact('groupOne', 'groupOne'));
我们可以使用另一种这样的方法。
$params = [
'groupOne' => $groupOne,
'groupTwo' => $groupTwo,
'groupThree'=>$groupThree,
'groupFour'=>$groupFour,
];
return view('pathTo.someView')->with($params);
按如下所示在刀片中使用它们。
@foreach( $groupThree as $item )
@endforeach
@foreach( $groupfour as $item )
@endforeach