【发布时间】:2017-02-01 04:58:39
【问题描述】:
我是 Laravel 的新手,在处理人际关系时我很头疼。
我有 2 张桌子: 会员 组
还有一个数据透视表:member_group
一个成员可以属于多个组,一个组可以有多个成员。
当我编辑成员时,我会为组创建复选框。
我需要将会员已经拥有的那些标记为“已检查”
我的编辑方法:
public function edit($id)
{
$cities = City::orderBy('city_name')->pluck('city_name', 'city_id');
$member = Member::findOrFail($id);
$groups = Group::all();
return view('members.edit', compact('member', 'cities', 'groups'));
}
在我的edit.blade中:
@foreach($groups as $group)
<?php $exists = $member->groups()->where('groups.group_id', $member->group_id); ?>
@if($exists)
<input type="checkbox" name="groups[]" value="{{ $group->group_id }}" checked> {{ $group->group_name }}
@else
<input type="checkbox" name="groups[]" value="{{ $group->group_id }}"> {{ $group->group_name }}
@endif
....
所有复选框都被选中,尽管该成员不属于所有组。
看这篇文章:Stackoverflow post 我几乎尝试了他们在那里提供的所有东西,只是出错了。唯一有效的是这个: $exists = $member->groups->contains($group->group_id);
不知道浪费与否,这是唯一有效的。
【问题讨论】:
-
您能否发布一些代码或详细说明您卡在哪里?
-
我的编辑方法:` public function edit($id) { $cities = City::orderBy('city_name')->pluck('city_name', 'city_id'); $member = Member::findOrFail($id); $groups = 组::all(); return view('members.edit', compact('member', 'cities', 'groups')); }` 我的刀片:
-
请详细说明您的问题。 :)
-
:) 更新了我的问题。我忘了在这里评论细节有多难
-
你想做什么
$exists = $member->groups()->where('groups.group_id', $member->group_id);这里?
标签: laravel eloquent relationship