请教一个关联查询问题
我的 User
模型一对一如下几个模型:
Card
- id_card
- name
- sex
Info
- mobile
- xxx
……..
我想问的问题是,假如客户比较鸡蛋里挑骨头,他就要同时根据: cards
表里的 name
字段
和 infos
表里的 mobile
字段来查询出用户。而且搜索框给出的搜索条件明显是两个不同的人。我是这样做的:
$name = '司松'; // 这是用户1
$mobile = '17154920634'; // 这里用户2
$users = User::query()->with([
'card' => function ($cardQuery)use($name) {
$cardQuery->when(!empty($name),function($query) use ($name) {
$query->where('name',$name);
});
},
'information'=>function($infoQuery) use ($mobile) {
$infoQuery->when(!empty($mobile),function ($query)use ($mobile) {
$query->where('mobile',$mobile);
});
}
])->get()->first();
但这样做貌似只能取出 with 条件里第一个用户。第二个取不出来。如果将 first()
去掉,获取的将是所有人的数据。
请问大佬们有没有什么好的办法?我也是个菜鸡。
还有一个问题是。我现在只是模拟数据。将来上线后。数据量可能会特别大的。如果数据量大的时候。我取出所有人还是用 User
模型 with
其它模型吗吗?虽然这些模型都反向关联了 User
模型.
推荐文章: