每个闭包条件两边会自动加上括号
实现代码
// tb_article
$query = ArticleModel::newQuery();
$query->where(function ($qr) {
$qr->where('name', '=', 'Tom')
->where('age', '<', 30);
});
// use 使用外层作用域变量
$name = 'Jack';
$query->whereOr(function ($qr) use ($name) {
$qr->where('name', '=', $name)
->where('age', '>', 23);
});
$query->buildSql();
输出语句
SELECT * FROM `tb_article`
WHERE ( `name` = 'Tom' AND `age` < '30' )
OR ( `name` = 'Jack' AND `age` > '23' )
/* 订单详情 function
*
* @Author XiaoLiu wen@zmmz.com
* @DateTime 2021-05-27 17:38:04
* @param [type] $id 任务ID
* @return void
*/
public function user_order_detail($id)
{
$where['user_id'] = $this->userId;
$where['order_id'] = $this->userId;
$arr = model::whereOr(function($query) use ($where){
$query->whereOr($where);
})->where(['id'=>$id])->with('user,specify')->buildSql();
if ($arr) {
$this->success('', $arr);
}
$this->error('数据不存在!');
}