Php 将SQL转换为Eloquent以联接多个表并计数
我一直认为这个SQL工作得很好,但试图将其转换为雄辩的格式,它不断返回错误的SQL,这完全标志着错误。 使用Laravel 5.5进行编码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
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中,它就会标记