我有一个成员表,其中包含一些条目。每个成员都可以在laravel的 users 表中创建一个用户帐户。
他们每个人都有一个名为“ person_id” 的字段,这就是建立连接的方式。
我有一个搜索返回所有列表。我有一个“仅搜索已注册”复选框,这意味着它仅返回拥有用户帐户的成员,否则,如果未选中该复选框,则返回所有用户的混合体。
问题是,无论是否选中此复选框,都必须为每个人拉取person_id。
if($reg == 'on') {
$Members = $Members->rightJoin('users', 'users.person_id', '=', 'members.person_id');
}
else {
$Members = $Members->leftJoin('users', 'users.person_id', '=', 'members.person_id');
}
我尝试了leftJoin,但person_id为空
答案 0 :(得分:0)
希望这会有所帮助。
答案 1 :(得分:0)
在成员模型中使用关系:
public function user()
{
return $this->belongsTo('App\User', 'person_id', 'person_id' );
}
public function getMemberWithUser()
{
return $this->select('*')->with('user')->get()->toArray();
}
,并在控制器中使用(new Member)->getMemberWithUser();
。这将返回您与用户的会员详细信息。
答案 2 :(得分:0)
我认识了那些没事的人。
大多数成员还没有用户帐户,只有2个帐户。选择并没有指定要从中获取person_id的表。由于大多数成员都缺少用户帐户,因此它试图从用户那里获取该帐户。
我这样做:
$Participants = Member::select(
'members.first_name',
'members.last_name',
'members.person_id',
'members.email'
);