ThinkPHP5.1关联预载入之延迟预载入


今天主要记录tp中关联预载入中load的具体使用方法以及需要避免的坑。

关联预载入的优点

1、能够有效提高性能

2、使代码更加规整,简洁

先解释load用法的意义:

当从数据库查询的数据如下时:

{
    "code": 1,
    "msg": null,
    "data": [
        [
            {
                "id": 1,
                "art_id": 3,
                "user_id": 1,
            }
        ]
    ]
}

我们还需要查询user_id和art_id所对应的用的基本信息。所以我们需要进行关联查询

关联查询

$signmodel=new SignModel();
$result= $signmodel->with("user")->select();

而load实际上就是把with分离出来,在需要的时候使用。

使用方法:

$result= $signmodel->select();
if (!$result->isEmpty()) {
    $result->load("user");
}

查询出的结果:

{
    "code": 1,
    "msg": null,
    "data": [
        [
            {
                "id": 1,
                "act_id": 3,
                "user_id": 1,
                "user": {
                    "id": 1,
                    "user_nickname": "我是管理员",
                    "avatar": "http://demo.demo.cn/upload/default/20191205/b877b644c028d313d2c5f4b82d9debbc.png"
                }
            }
        ]
    ]
}

不过load在使用时,有一个坑需要注意。

查询时必须要用select(),不能用find()

$signmodel=new SignModel();
$result= $signmodel->with("user")->select();


对于tp模型关联的具体用法可以看另外一篇文章

ThinkPHP5.1模型关联查询

点赞(1

上一篇: ThinkPHP对查询的数据随机排序

下一篇: ThinkPHP5.1模型关联查询

本文标签: #ThinkPHP #预载入

版权声明: 若无特殊注明,本文皆为原创,转载请注明出处。

发布时间: 2020-02-02 23:40

点击总数: 1128

本文作者:97


请登陆后在进行评论


    点击登陆


    文章
    15
    评论
    14
    用户
    43