ユーザー名に基づいて注文を問い合わせる


目次
  • 一、需要
  • 二、表部分フィールド
  • 三、考え方
  • 四、コード
  • 一、需要
  • フロントエンドページ(リストに受注データが表示されます)には、2つの入力ボックスがあります.受注番号を入力してください.ユーザー名を入力して、入力した内容に基づいて受注を取得して、表(ページング)に表示します.
  • 二、表部分フィールド
  • 受注表:id,order_sn,user_id,create_time,…
  • ユーザテーブル:id,username,...
  • 三、考え方
    テーブル設計から分かるように、ユーザー名には受注テーブルが存在せず、user_のみを通過するidが調べに来たので、ユーザー名を入力すると.ユーザ名に基づいてユーザテーブルでidを取得し、ユーザテーブルのidに基づいてINに行って受注テーブルのuser_を照会するid : username order ?
  • 注文番号を入力する時:直接注文表のあいまいな照会で
  • ユーザー名を入力する時:ユーザー名によってユーザー表でidを得て、ユーザー表のidによって、INに行って注文表のuser_を問合せますid

  • 四、コード
    
    
    namespace app\index\controller;
    
    class Ablog extends Base
    {
        /**
         *             
         * @param $param ['order_sn' => '1234', 'username' => '  ']
         * @param $pager ['page' => 1, 'page_size' => 10]
         * @return array
         */
        public function lists($param, $pager){
            $flag = self::processParam($param);
            if (!$flag){    //  flag false,       
                return [ 'data' => [], 'count' => 0 ];
            }
    
            $orderDao = new OrderDao(); //      
            $data = $orderDao->query($param, ['id', 'order_sn', 'user_id', 'create_time'], $pager); //         ,     ['data'=>[], 'count'=>0]
            if ($data['data']){ //  $data['data'],    $data
                //    ID      
                $userDao = new UserDao();   //      
                $userParam['id'] = ['in', array_column($data['data'], 'user_id')];  //IN  user id  
                $userList = $userDao->queryAll($userParam, ['id', 'username']); //      
                $userIdToName = array_column($userList, 'username', 'id');  //      [id=>username, id=>username, ...]  
    
                foreach ($data['data'] as &$value){ //        
                    $value['username'] = !empty($userIdToName[$value['user_id']]) ? $userIdToName[$value['user_id']] : '    ';  //        
                    $value['create_time'] = date('Y-m-d H:i:s', $value['create_time']); //[     1712312312 ]    [    2024-04-05 18:18:32 ]   
                }
            }
            return $data;
        }
    
        /**
         *     
         * @param $param       
         * @return bool          :    
         */
        public function processParam(&$param){
            $flag = true;
            if (!empty($param['username'])){    //        
                $userDao = new UserDao();       //        
                $userParam['username'] = ['like', $param['username']];  //Like    user username  
                $userList = $userDao->queryAll($userParam);             //      :       
                if (empty($userList)){  //     ,flag   false:lists()          
                    $flag = false;
                }else{  //    ,IN  order user_id  
                    $param['user_id'] = ['in', array_column($userList, 'id')];  //IN  order user_id  
                    unset($param['username']);  //  order      username  
    
                    //tips:unset()          
                    //unset($a, $b, $c);
                }
            }
            if (!empty($param['order_sn'])){  //        
                $param['order_sn'] = ['like', $param['order_sn']];
            }
            return $flag;
        }
    }