关联查询使用with查询
$users = User::with(['profile' => function($query) {$query->field('name,email');
}])->select();
foreach ($users as $user) {echo $user->profile->name;
}
如果查询数据时,没有数据,则不返回整条信息,则使用 hasWhere,进行查询
// 查询用户昵称是think的用户
// 注意第一个参数是关联方法名(不是关联模型名)
$users = User::hasWhere('profile', ['nickname'=>'think'])->select();// 可以使用闭包查询
$users = User::hasWhere('profile', function($query) {$query->where('nickname', 'like', 'think%');
})->select();
使用 hasWhere ,时,必须 放在最前面,如果关联的数据为空,则整条都不返回,且即使使用 闭包查询也无效,都必须要有数据才返回,闭包只作为2次限制使用,未查询到数据,则不返回(前提,关联数据必须要有数据)
PS:使用 hasWhere 后,field 失效($this->field(‘id’))无效,需要使用下面的方式进行查询
$data = PayOrderModel::hasWhere('user', ['id'=>$this->USER->id], 'order_title,order_number,order_price,pay_type,actual_price,pay_time')//->field('order_title,order_number,order_price,pay_type,actual_price,pay_time')->where('status', ['=',2], ['=',4], 'or')//->order('id','desc')//下面这两种方式任选一种//使用表名//->order('pay_order.id','desc')//使用模型名->order('PayOrderModel.id','desc')->limit($start,$limit)->select();