Я должен создать исследовательскую систему для сайта объявлений. Мы можем осуществлять поиск по категориям или через город объявления.Предельный результат для каждой категории с Laravel 4.2 Запрос MySQL
Когда кто-то что-то изучает Я хочу установить лимит результатов для каждой категории (пример: 3) с использованием Eloquent.
Я знаю, что это совсем не просто, даже в необработанном SQL, и уже часами я пытаюсь найти путь без успеха. Я попытался добавить закрытие запроса, но мне очень сложно понять, как правильно это использовать ...
Я понял, что мне нужно сделать подзапрос, чтобы сделать трюк, но также сложно понять, как организуйте все это.
Инструментальные средства (с последующим текущего запроса, который не работает):
Вот контроллер с запросом:
$announcements = Announcement::select('announcements.*')
->withCitySlug($location)
->withCategory($category_id)
->perCategoryLimit(3)
->get();
модель Объявление (интересная часть) :
/**
* HasManyThrough
*/
public function categories()
{
return $this->belongsToMany('Category', 'announcement_categories');
}
public function scopeWithCitySlug($query, $city_slug) {
if (empty($city_slug)) return $query;
return $query->where('city_slug', 'LIKE', '%'.$city_slug.'%');
}
public function scopeWithCategory($query, $category_id) {
if ($category_id === FALSE) return $query;
return $query->join('announcement_categories', 'announcement_categories.announcement_id', '=', 'announcements.id')
->join('categories', 'categories.id', '=', 'announcement_categories.category_id') ->where('categories.id', '=', $category_id);
}
public function scopePerCategoryLimit($query, $limit) {
return $query;
/*return $query->with(array('categories' => function($q)
{
$q->limit(3)->get();
}));*/
}
Любые Eloquent/SQL exp ерт здесь? Немного помочь в решении этой проблемы было бы идеально;)
PS: Если бы я не дал достаточно кода, чтобы понять проблему, просто дайте мне знать!