我在更新 Laravel 帐户表及其组时遇到问题。我希望 Laravel 选择该帐户在数据透视表中的下拉列表 ID,但由于错误的嵌套循环,它显示重复的下拉列表。我该怎么办?
在账户控制器中
public function edit(string $id)
{
$account = Account::find($id);
$groups = Group::pluck('name','id')->toArray();
$pages = Page::pluck('name','id')->toArray();
return view('accounts.edit',compact('account','groups','pages'));
}
在edit.blade.php中
@foreach( $groups as $gr_id => $gr_name ) /** Get all data from db to show in html dropdown **/
@foreach ($account->group as $group_data) /** get the selected dropdown from pivot table **/
@if ( $gr_id == $group_data->id ) /** compare their id the selected dropdown **/
<option value="{{ $gr_id }}" selected> {{ $gr_name }}</option>
@else
<option value="{{ $gr_id }}"> {{ $gr_name }}</option>
@endif
@endforeach
@endforeach
此问题与错误编码技术的嵌套循环有关。你能纠正我吗?
尝试循环遍历所有组一次,然后检查当前组是否在帐户的组中。您可以使用 Laravel 集合提供的
contains
方法来实现此目的。
@foreach( $groups as $gr_id => $gr_name )
@if ($account->group->contains('id', $gr_id))
<option value="{{ $gr_id }}" selected> {{ $gr_name }}</option>
@else
<option value="{{ $gr_id }}"> {{ $gr_name }}</option>
@endif
@endforeach