別のテーブルへの 2 つの参照を熱心にロードするモデルがあります (この場合はposts.created_by_id == users.id
とposts.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 が現在サポートしているものですか?