为了账号安全,请及时绑定邮箱和手机立即绑定

在一个库里根据姓名,身份证号搜索人物信息

在一个库里根据姓名,身份证号搜索人物信息

PHP
哈士奇WWW 2019-03-18 16:58:49
$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'));
        最后用了最老土的方法解决了问题
查看完整回答
反对 回复 2019-03-18
?
喵喔喔

TA贡献1735条经验 获得超5个赞

第2步中的查询还没写完整吧?$infos->get();
第3步people()中的where()改成wherePivot('status', '<>', 2)试一下

查看完整回答
反对 回复 2019-03-18
?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

 if(isset($queryName)) {
     $query = $query->where('name',$queryName);
 }
 if (isset($queryId)) {
     $query = $query->where('id_code',$queryId);
 }
查看完整回答
反对 回复 2019-03-18
?
繁星点点滴滴

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();
查看完整回答
反对 回复 2019-03-18
  • 5 回答
  • 0 关注
  • 645 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信