鍍金池/ 問答/PHP/ 在一個(gè)庫里根據(jù)姓名,身份證號搜索人物信息

在一個(gè)庫里根據(jù)姓名,身份證號搜索人物信息

  1. $queryName表示姓名,$queryId表示身份證號,$queryLibid表示庫id,我在一個(gè)庫里進(jìn)行姓名和身份證搜索功能,姓名和身份證不能同時(shí)為空(不是模糊搜索),如果姓名不為空,身份證為空,把滿足條件的人查詢出來;姓名為空,身份證不為空,把滿足條件的人查詢出來;如果都不為空,倆者都滿足的查出來;人必須在這個(gè)庫里,不能把其他庫的人查出來
  2. $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 .
    clipboard.png

clipboard.png

回答
編輯回答
膽怯

$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'));
        最后用了最老土的方法解決了問題
2017年4月30日 08:20
編輯回答
浪婳

12313213123213

2017年11月13日 20:13
編輯回答
冷咖啡

第2步中的查詢還沒寫完整吧?$infos->get();
第3步people()中的where()改成wherePivot('status', '<>', 2)試一下

2017年12月28日 22:30
編輯回答
深記你

驗(yàn)證的話 直接用 $this->validate().... 這樣去驗(yàn)證
查詢的話 試試這個(gè)

$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();
2018年4月15日 11:04
編輯回答
神曲
 if(isset($queryName)) {
     $query = $query->where('name',$queryName);
 }
 if (isset($queryId)) {
     $query = $query->where('id_code',$queryId);
 }
2018年8月16日 06:15