Laravel ORM with简单用法

从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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小镇学者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值