今天遇到一个模型关联查询关联表数据为空的问题。废话不多说,先看代码:
$where = [];
if (!empty($param['user_account'])) {
$where[] = ['user_account', 'like', '%' . $param['user_account'] . '%'];
}
$where[] = ['status','=',1];
$users = $this->with(['user' => function($query) {
$query->field('user_account as old_account,create_time as register_time');
}]) ->field($field)
->where($where)
->order('success_time desc')
->select();
代码中使用官方文档中的预加载查询,但到的数据为空。
解决方案:
$where = [];
if (!empty($param['user_account'])) {
$where[] = ['user_account', 'like', '%' . $param['user_account'] . '%'];
}
$where[] = ['status','=',1];
$users = $this->with(['user' => function($query) {
$query->field('id,user_account as old_account,create_time as register_time');
}]) ->field($field)
->where($where)
->order('success_time desc')
->select();
关联查询预加载,闭包查询中要添加主键id。
$query->field(‘id,user_account as old_account,create_time as register_time’);