gpt4 book ai didi

php - 使用 Laravel 4.2 MySQL 查询限制每个类别的结果

转载 作者:行者123 更新时间:2023-11-29 03:30:24 24 4
gpt4 key购买 nike

我要为公告网站构建一个研究系统。我们可以通过分类搜索,也可以通过公告城市搜索。

当有人研究某事时,我想使用 Eloquent 设置每个类别的结果限制(例如:3)

我知道这一点都不容易,即使是在原始 SQL 中也是如此,而且我已经花了好几个小时试图找到一个没有成功的方法。我试图在查询中添加一个闭包,但我很难理解如何正确使用它......

我明白我需要做一个子查询来完成这个技巧,但是知道如何组织所有这些也很棘手。

工作台(后面是当前不工作的查询):

enter image description here

这是带有查询的 Controller :

  $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 专家吗?在解决这个问题的方法中提供一点帮助将是完美的;)

PS:如果我没有提供足够的代码来理解问题,请告诉我!

最佳答案

好吧,您可以选择所有类别并使用带有限制的 foreach 来获取所有结果或使用 partition by from sql。

关于php - 使用 Laravel 4.2 MySQL 查询限制每个类别的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31446845/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com