Php 将mysql子查询+分组方式转换为laravel eloquent
我得到了这个MySQL查询: 选择*, 选择计数* 从'album\u picture\u category'开始 其中r.`category\u id`=b.`category\u id` 按r.`category_id`作为计数分组 从“相册”到“图片”到“类别” 按“类别\标识”分组; 我想把它转换成拉雷维尔的雄辩,我试着: PictureAlbumCategory::addSelect[ 'count'=>函数$query{$query->从'album\u picture\u category r'->其中列'r.category\u id','album\u picture\u category\u id'->groupBy'r.category\u id'; }]->groupBy'category\u id' ->得到; 但它不起作用;我明白了 PHP警告:strtolower希望参数1是字符串,对象在第58行的C:/xampp/htdocs/test/vendor/laravel/framework/src/light/Database/Grammar.PHP中给出 有人知道我做错了什么吗 结果应该如下所示:Php 将mysql子查询+分组方式转换为laravel eloquent,php,mysql,laravel,eloquent,Php,Mysql,Laravel,Eloquent,我得到了这个MySQL查询: 选择*, 选择计数* 从'album\u picture\u category'开始 其中r.`category\u id`=b.`category\u id` 按r.`category_id`作为计数分组 从“相册”到“图片”到“类别” 按“类别\标识”分组; 我想把它转换成拉雷维尔的雄辩,我试着: PictureAlbumCategory::addSelect[ 'count'=>函数$query{$query->从'album\u picture\u cate
album_id | category_id | count |
1 1 1
1 2 1
1 3 1
1 5 1
1 6 1
1 7 1
1 9 1
2 13 1
1 14 2
1 15 2
1 16 2
1 17 2
2 pivot table rows+count column这是发生计数,我不在laravel中,但我建议使用一个简单的转换、正确的范围和更好的性能,而不是列的子查询。您可以尝试在JOIN中使用子查询
SELECT *, t.count_category
FROM `album_picture_category` b
INNER JOIN (
SELECT Count(*) count_category
FROM r.`category_id`, `album_picture_category` r
GROUP BY r.`category_id`
) t ON t.category_id = b.category_id
您需要使用selectRaw和groupBy。你可以试试这个代码。我希望这段代码对您有所帮助
PictureAlbumCategory::groupBy('category_id')
->selectRaw('count(*) as total, category_id')
->get();
什么是不工作。。我们需要知道您的期望和实际发生的情况。您可以使用原始查询吗?只是asking@lagbox您好,我收到了PHP警告:strtolower希望参数1是字符串,对象在C:/xampp/htdocs/test/vendor/laravel/framework/src/illighte/Database/Grammar.PHP中在线给出58@DanyalSandelo嗨,有没有可能不用原始查询就可以工作?如果没有,那么maybeLaravel有一个withCount方法,所以您需要做的就是正确定义您的关系并使用它。