Php 如何将多个模型传递到Laravel视图

Php 如何将多个模型传递到Laravel视图,php,laravel,eloquent,Php,Laravel,Eloquent,在我的Laravel项目中,我试图显示数据库中的一些数据。从多个表中查找数据。结构如下所示: return view('myview', [ 'groups' => $groups ]); 组,例如名称=G1 书籍,例如名称=B1 铅笔,例如名称=P1 墨水,例如名称=I1 组,例如名称=G2 书籍,例如名称=B2 铅笔,例如名称=P2 墨水,例如名称=I2 小组、书籍、铅笔和墨水是口才/模型课程。我可以使用表之间的所有关系很好地查找数据。现在,我想将这些数据发送到Laravel

在我的Laravel项目中,我试图显示数据库中的一些数据。从多个表中查找数据。结构如下所示:

return view('myview', [
    'groups' => $groups
]);
组,例如名称=G1

书籍,例如名称=B1 铅笔,例如名称=P1 墨水,例如名称=I1 组,例如名称=G2

书籍,例如名称=B2 铅笔,例如名称=P2 墨水,例如名称=I2 小组、书籍、铅笔和墨水是口才/模型课程。我可以使用表之间的所有关系很好地查找数据。现在,我想将这些数据发送到Laravel视图php,以便显示。在查看php时,将显示组名为G1或G2的组的下拉元素,因此如果用户选择G1,页面应显示所有G1相关信息,例如B1、P1、I1,对于G1,则显示其相关信息。默认情况下或页面加载时,应显示列表中的第一个组及其相关信息

我想知道我应该如何打包我认为是某个数组的数据,并在view php中使用它?以及当组下拉列表中的选择发生更改时,如何更新视图


非常感谢

在控制器方法中

$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自带开箱即用。我建议从那里开始动态更改内容。

在控制器方法中

$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自带开箱即用。我建议从这里开始动态更改内容。

首先,您可以通过雄辩的查询收集所需的数据:

$groups= \App\Group::where('')->get();
此方法返回一个包含一组帮助器方法的类。如果需要单个实例,请使用->first

然后,您可以通过第二个参数将数据传递给视图,如下所示:

return view('myview', [
    'groups' => $groups
]);
最后,您可以使用刀片模板指令在视图文件中呈现列表:

<select>
@foreach($groups as $group)
   <option>{{$group->book->attribute}}</option>
@endforeach
</select>

要动态更新下拉列表选择,需要使用动态JavaScript显示相关下拉列表。如果您有很多组或其他模型,那么在更改选择时,您可能应该使用ajax一次只获取一个组。使用ajax动态加载列表时,您可以使用blade指令呈现初始列表,但不能依靠它来更新视图,因为blade是服务器端呈现引擎,在视图发送到客户端后无法动态更改其内容。

首先,您可以通过雄辩的查询收集所需的数据:

$groups= \App\Group::where('')->get();
此方法返回一个包含一组帮助器方法的类。如果需要单个实例,请使用->first

然后,您可以通过第二个参数将数据传递给视图,如下所示:

return view('myview', [
    'groups' => $groups
]);
最后,您可以使用刀片模板指令在视图文件中呈现列表:

<select>
@foreach($groups as $group)
   <option>{{$group->book->attribute}}</option>
@endforeach
</select>

要动态更新下拉列表选择,需要使用动态JavaScript显示相关下拉列表。如果您有很多组或其他模型,那么在更改选择时,您可能应该使用ajax一次只获取一个组。使用ajax动态加载列表时,您可以使用blade指令呈现初始列表,但不能依靠它来更新视图,因为blade是服务器端呈现引擎,在视图发送到客户端后无法动态更改其内容。

为每个模型指定一个变量,并将其传递给view方法。这是第二个论点:我使用紧凑的“customerModel”、“staffModel”;看起来干净多了

给每个模型一个变量,并将其传递给view方法。这是第二个论点:我使用紧凑的“customerModel”、“staffModel”;看起来干净多了

$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
当存在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

谢谢你的快速回复!有一个问题返回视图'pathTo.someView',compact'groupOne',groupOne';请原谅我的无知,这将返回两个字符串以供查看?请检查php手册中的函数。它使用这两个变量名作为引用,并创建它们的值的数组。发送到视图的是一个包含两个键的数组:“groupOne”和“groupTwo”,每个键都包含各自的集合作为其值。非常感谢!谢谢你的快速回复!有一个问题返回视图'pathTo.someView',compact'groupOne',groupOne';请原谅我的无知,这将返回两个字符串以供查看?请检查php手册中的函数。它使用这两个变量名作为引用,并创建它们的值的数组。发送到视图的是阵列wi
th 2个键:“groupOne”和“groupTwo”,每个键都包含各自的收藏作为其价值。非常感谢!