Я только начал играть с Laravel 4 и Eloquent. У меня есть таблица блога и много других связанных таблиц к нему:Eloquent делает много запросов
blog <- main info about the blog record
blog_lang <- translations for each blog record
blog_categories <- name speaks for itself
blog_categories_lang <- translations for blog categories titles
blog_to_categories <- pivot table between blog and blog_categories
blog hasMany blog_lang.
blog_categories hasMany blog_categories_lang
blog belongsToMany blog_categories
Я хочу, чтобы показать следующую информацию в одной сетке: blog_id
, blog_title
, username
, и все категории:
$data['blogs'] = Blog::with(array(
'translations' => function ($q) {
$q->where('lang_id', '=', 1);
},
'user',
'categories',
'categories.translations' => function ($q) {
$q->where('lang_id', '=', 1);
}
))->get();
Это выполняет 5 запросов ... не слишком ли они слишком много? Будет ли лучше использовать Fluent
и соединить все эти таблицы с 1 большим запросом?
Чтобы расширить свой ответ ... один огромный объединенный запрос также обеспечит избыточные столбцы/строки во всех отношениях, кроме атрибутов, принадлежащих To или hasOne, поскольку вам потребуется одна запись на самую глубокую ссылку в отношениях - противно! –
Спасибо большое ^^ Я не могу проголосовать за ваш ответ, потому что мне не хватает, но я проверил его как принятый. Еще раз спасибо вам обоим ^^ Cheers – faust