Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/249.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将mysql子查询+分组方式转换为laravel eloquent_Php_Mysql_Laravel_Eloquent - Fatal编程技术网

Php 将mysql子查询+分组方式转换为laravel eloquent

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

我得到了这个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中给出

有人知道我做错了什么吗

结果应该如下所示:

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方法,所以您需要做的就是正确定义您的关系并使用它。