2

別のテーブルへの 2 つの参照を熱心にロードするモデルがあります (この場合はposts.created_by_id == users.idposts.updated_by_id == users.id)。

class Post {
    protected $table = 'posts';

    public function scopeLatest() {
        return $query->with(['created_by', 'updated_by'])
                     ->orderBy('created_at', 'desc');
    }

    public function createdBy() {
        return $this->belongsTo('User');
    }

    public function updatedBy() {
        return $this->belongsTo('User');
    }
}

class User {
    protected $table = 'users';

    public function posts() {
        return $this->hasMany('Post', 'created_by');
    }
}

これにより、次のようなクエリが生成されます。

SELECT * FROM tbl ORDER BY created_at DESC;
SELECT * FROM users WHERE id IN (?); (created_at)
SELECT * FROM users WHERE id IN (?); (updated_at)

これは理にかなっています - 参照されているすべてのレコードを にロードしていますが、created_byこれupdated_byを最適化して ID を組み合わせて への 1 つのクエリを作成することもできますusers

私の質問は: これは Eloquent が現在サポートしているものですか?

4

2 に答える 2