Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.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 将SQL转换为Eloquent以联接多个表并计数_Php_Mysql_Sql_Laravel 5_Eloquent - Fatal编程技术网

Php 将SQL转换为Eloquent以联接多个表并计数

Php 将SQL转换为Eloquent以联接多个表并计数,php,mysql,sql,laravel-5,eloquent,Php,Mysql,Sql,Laravel 5,Eloquent,我一直认为这个SQL工作得很好,但试图将其转换为雄辩的格式,它不断返回错误的SQL,这完全标志着错误。 使用Laravel 5.5进行编码 Select arm_articles.article_topic, arm_articles.id, arm_articles.article_id, COUNT(arm_article_views.view_article_id) AS TotalViews, COUNT( arm_article_likes.liked_article_id) AS

我一直认为这个SQL工作得很好,但试图将其转换为雄辩的格式,它不断返回错误的SQL,这完全标志着错误。 使用Laravel 5.5进行编码

Select arm_articles.article_topic, arm_articles.id, arm_articles.article_id, 
COUNT(arm_article_views.view_article_id) AS TotalViews, 
COUNT( arm_article_likes.liked_article_id) AS TotalLikes, 
COUNT( arm_article_comments.comment_article_id) AS TotalComments
FROM arm_articles 
LEFT JOIN  arm_article_views  ON  arm_articles.article_id = arm_article_views.view_article_id 
LEFT JOIN  arm_article_likes  ON  arm_articles.article_id = arm_article_likes.liked_article_id 
LEFT JOIN  arm_article_comments  ON  arm_articles.article_id = arm_article_comments.comment_article_id 
GROUP BY arm_articles.article_id 
ORDER BY TotalLikes, TotalLikes, TotalComments ASC`
我是如何让雄辩的查询生成器无法工作的:

return Datatables::of(PostModel::leftJoin('arm_article_views', 'arm_article_views.view_article_id', '=', 'arm_articles.article_id')
       ->leftJoin('arm_article_likes','arm_article_likes.liked_article_id', '=', 'arm_articles.article_id')
       ->leftJoin('arm_article_comments', 'arm_article_comments.comment_article_id','=','arm_articles.article_id')
       ->selectRaw(
           'arm_articles.*, 
           count(arm_article_views.view_article_id) AS ViewCount'
        ) 
        ->groupBy('arm_articles.article_id')->orderBy('ViewCount','DESC')
        ->where('arm_articles.article_contributor_id','=',$contributor_id)
        ->getQuery())->make(true);
任何提示都将不胜感激

请尝试以下内容:

DB::table('arm_articles')
        ->leftJoin('arm_article_views', 'arm_articles.article_id', '=', 'arm_article_views.view_article_id')
        ->leftJoin('arm_article_likes', 'arm_articles.article_id', '=', 'arm_article_likes.liked_article_id')
        ->leftJoin('arm_article_comments', 'arm_articles.article_id', '=', 'arm_article_comments.comment_article_id')
        ->groupBy('arm_articles.article_id', 'article_topic')
        ->select(
            DB::raw('count(arm_article_views.view_article_id) as TotalViews'),
            DB::raw('count(arm_article_likes.liked_article_id) as TotalLikes'),
            DB::raw('count(arm_article_comments.comment_article_id) as TotalComments'),
            'arm_articles.article_id',
            'article_topic'
        )->get();

@Nikola Gavric你有什么线索吗?我已经发布了一个答案,等待你看看它是否对你的答案起到了关键作用,但当我尝试在select->select'arm_articles.*上添加更多字段时,遇到了一些SQL错误,错误消息为SQLSTATE[42000]:语法错误或访问冲突:1055“knowledge\u db.arm\u articles.id”不在SQL分组中:选择arm\u articles.*,countarm\u article\u views.view\u article\u id为TotalViews,countarm\u article\u likes.liked\u article\u id为totalikes,countarm\u article\u comments.comment\a………db::table'arm\u articles'->leftJoin'arm\u article\u views',“arm文章.文章id','=','arm文章视图.视图文章id'->leftJoin'arm文章喜欢','arm文章id','=','arm文章喜欢','arm文章id'->leftJoin'arm文章评论','arm文章id',','arm文章评论.评论文章id'->groupBy'arm文章.文章id'->选择'arm文章。*,DB::raw'countarm\u article\u views.view\u article\u id as TotalViews',DB::raw'countarm\u article\u id as totalikes',DB::raw'countarm\u article\u comments.comment\u article\u id as….您正在按article\u id进行分组,因此无法使用*通配符->选择'arm\u articles.id'、'arm\u articles.articles\u id'、'arm\u articles.articles\u category\u id',“arm_文章.文章主题”,“arm_文章.文章类型”,“arm_文章.文章日期”,“arm_文章.文章活动”,“arm_文章.文章类别”,“arm_文章.文章标记”,它返回了相同的错误,或者我如何将文章id和文章主题包含到SQLJust中的选定字段中?刚刚运行了更新的SQL并得到了错误SQLSTATE[42000]:语法错误或访问冲突:1055“knowledge\u db.arm\u articles.article\u topic”不在SQL分组中:选择countarm\u article\u views.view\u article\u id作为TotalViews,countarm\u article\u likes.liked\u article\u id作为Totalikes,=>似乎一旦将任何字段添加到select中,它就会标记