Eloquent Eager加载查询 - IN与WHERE

时间:2017-06-06 08:48:31

标签: laravel laravel-5 eloquent

我已经从Eloquent打开了查询日志,并且非常惊讶ORM在后台正在做什么,特别是在Eager Loading中。

让我解释一下:

class User extends Model{

    protected $primaryKey = 'id_user';

    public function child(){

        return $this->hasOne('Models\Child','id_user');
    }
}

然后我在某个地方使用它:

  

用户::与('子') - >发现(1);

背景中的查询应该是使用 EQUAL(=)运算符的简单 WHERE ,因为关系是hasOne。

但是查看Query Logger,上面的操作返回:
(忘记用户的查询,一个是"对")

{
    "query": "select * from `childs` where `childs`.`id_user` in (?)",
    "bindings": [
        106
    ],
    "time": 0.36
}

Eloquent构建的查询使用运算符 IN 而不是 EQUAL(=),除非它们在M​​ySQL中相同,否则这没有任何意义。< / p>

示例:

{
    "query": "select * from `childs` where `childs`.`id_user` = ?",
    "bindings": [
        106
    ],
    "time": 0.36
}

我的问题是:可以优化此查询吗?这个查询比使用 EQUAL(=)

Eloquent是这样做的,还是我对这段关系做错了什么?

0 个答案:

没有答案