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