$queryName表示姓名,$queryId表示身份证号,$queryLibid表示库id,我在一个库里进行姓名和身份证搜索功能,姓名和身份证不能同时为空(不是模糊搜索),如果姓名不为空,身份证为空,把满足条件的人查询出来;姓名为空,身份证不为空,把满足条件的人查询出来;如果都不为空,俩者都满足的查出来;人必须在这个库里,不能把其他库的人查出来
$queryName = request('queryName'); $queryId = request('queryIdcode'); $queryLibid = request('queryLibid'); if (empty($queryName) && empty($queryId)) {
return [
'error' => 1,
'msg' => "请输入搜索条件",
];
} $infos = new YBukonglibMgr; $infos = $infos->where('id',$queryLibid); $infos = $infos->whereHas('people', function ($query) use($queryName, $queryId) {
if(!empty($queryName)) {
$query = $query->where('name',$queryName);
}
if (!empty($queryId)) {
$query = $query->where('id_code',$queryId);
}
}); $view = 'library/control/result_querypeople';3 .
5 回答
GCT1015
TA贡献1827条经验 获得超4个赞
$tid = $queryLibid;
// dd($infos);
$infos = new \YPeoplelib;
if(!empty($queryName)) {
$infos = $infos->where('name', '=', $queryName);
}
if (!empty($queryId)) {
$infos = $infos->where('id_code', '=', $queryId);
}
$peoples_query = $infos->get();
// dd($peoples);
$infos = \YBukonglibMgr::find($queryLibid)->people()->get();
// dd($infos);
$peoples = [];
foreach ($peoples_query as $vid) {
foreach ($infos as $inid){
if ($vid->id == $inid->id) {
$peoples[] = $inid;
}
}
}
$sum = count($peoples);
// dd($peoples);
$view = 'library/control/result_querypeople';
return view($view, compact('peoples', 'sum', 'tid'));
最后用了最老土的方法解决了问题
喵喔喔
TA贡献1735条经验 获得超5个赞
第2步中的查询还没写完整吧?$infos->get();
第3步people()中的where()改成wherePivot('status', '<>', 2)试一下
慕桂英3389331
TA贡献2036条经验 获得超8个赞
if(isset($queryName)) {
$query = $query->where('name',$queryName);
}
if (isset($queryId)) {
$query = $query->where('id_code',$queryId);
}
繁星点点滴滴
TA贡献1803条经验 获得超3个赞
验证的话 直接用 $this->validate().... 这样去验证
查询的话 试试这个
$res = YBukonglibMgr::when($queryName, function ($query) use ($queryName) {
return $query->whereName($queryName);
})
->when($queryId, function ($query) use ($queryId) {
return $query->where('id_code' , $queryId);
})->get();
- 5 回答
- 0 关注
- 645 浏览
添加回答
举报
0/150
提交
取消