从sql运行日志看,with在内部做了相应的数据组装
// 定义模型
class User extends BaseModel
{
protected $table = 'user_result';
protected $guarded = [];
public $timestamps = true;
const CREATED_AT = 'create_time';
const UPDATED_AT = 'update_time';
public function __construct(array $attributes = [])
{
parent::__construct($attributes);
}
public function user()
{
return $this->belongsTo(User::class, 'user_id', 'user_id');
}
}
public function testWith()
{
$actorgid = 3274;
$query = UserResult::where(['actorgid' => $actorgid, 'period' => 0]);
$query->with(['user' => function ($query) use ($actorgid) {
$query->select('user_id', 'real_name', 'phone', 'job_number', 'read_card', 'student_card', 'extra1')
->where('actorgid', $actorgid);
}]);
$query->orderBy('score_avg', 'desc')->orderBy('used_time_avg', 'asc');
return $query->skip(0)
->take(10)
->get()
->toArray();
}
输出结果:
[
{
"id": 3203,
"actorgid": 3274,
"user_id": 12684492,
"update_time": "2020-09-28 15:23:53",
"create_time": "2020-09-28 15:23:53",
"user": {
"user_id": 12684492,
"real_name": "张三",
}
},
{
"id": 3141,
"actorgid": 3274,
"user_id": 12684494,
"update_time": "2020-09-22 16:30:54",
"create_time": "2020-08-20 16:21:33",
"user": {
"user_id": 12684494,
"real_name": "张三1",
}
},
{
"id": 3271,
"actorgid": 3274,
"user_id": 12684495,
"update_time": "2020-10-13 15:25:36",
"create_time": "2020-10-13 15:25:36",
"user": {
"user_id": 12684495,
"real_name": "张三2",
}
},
{
"id": 3145,
"actorgid": 3274,
"user_id": 12684493,
"update_time": "2020-09-16 10:45:14",
"create_time": "2020-08-24 11:27:58",
"user": {
"user_id": 12684493,
"real_name": "1231",
}
},
{
"id": 3180,
"actorgid": 3274,
"user_id": 15090710,
"update_time": "2020-10-09 15:32:57",
"create_time": "2020-09-16 09:30:17",
"user": {
"user_id": 15090710,
"real_name": "哈哈",
}
},
{
"id": 3137,
"actorgid": 3274,
"user_id": 12444994,
"update_time": "2020-09-30 11:30:02",
"create_time": "2020-08-19 10:21:00",
"user": null
},
{
"id": 3267,
"actorgid": 3274,
"user_id": 15848213,
"update_time": "2020-10-13 15:30:01",
"create_time": "2020-10-13 15:14:34",
"user": {
"user_id": 15848213,
"real_name": "bb",
}
},
{
"id": 3227,
"actorgid": 3274,
"user_id": 15090719,
"update_time": "2020-09-28 18:33:21",
"create_time": "2020-08-16 18:06:39",
"user": {
"user_id": 15090719,
"real_name": "张三3",
}
},
{
"id": 3223,
"actorgid": 3274,
"user_id": 15090715,
"update_time": "2020-09-28 18:33:21",
"create_time": "2020-08-16 18:06:39",
"user": {
"user_id": 15090715,
"real_name": "张三4",
}
},
{
"id": 3224,
"actorgid": 3274,
"user_id": 15090716,
"update_time": "2020-09-28 18:33:21",
"create_time": "2020-08-16 18:06:39",
"user": {
"user_id": 15090716,
"real_name": "张三5",
}
}
]
sql执行日志:
2020-10-15 17:00:52: select * from `user_result` where (`actorgid` = 3274 and `period` = 0) order by `score_avg` desc, `used_time_avg` asc limit 10 offset 0
2020-10-15 17:00:52: select `user_id`, `real_name` from `user` where `user`.`user_id` in (12444994, 12684492, 12684493, 12684494, 12684495, 15090710, 15090715, 15090716, 15090719, 15848213) and `actorgid` = 3274