对Eloquent的大原始查询

时间:2017-11-03 07:35:27

标签: laravel eloquent

我有以下查询:

select users.email, count(login_history.id) actions from users
          left join group_memberships ON group_memberships.user_id = users.id
          left join groups ON groups.id = group_memberships.group_id
          left join organisation ON organisation.group_id = groups.parent_id
          right join login_history ON login_history.user_id = users.id
        where group_memberships.group_id = 564 AND ((MONTH(login_history.created_at) = MONTH(CURDATE()) AND YEAR(login_history.created_at) = YEAR(CURDATE())))
        group by login_history.user_id

由于我想使用范围,我需要在Eloquent中使用此查询。我可以使用selectRaw和whereRaw这应该工作,但是使用Eloquent:Users模型和此查询的关系会更好吗?它甚至可能吗?

任何输入都非常赞赏。

1 个答案:

答案 0 :(得分:1)

所有这些数据库操作都有详细记录here。可能是左连接。 你这样做(使用回调函数):

->leftJoin('category_lang', function( $join ) {
   $join->on( 'category_lang.category_id', '=', 'do_hta_dirs.hd_pag_ID' );
   $join->on( 'category_lang.lang_id', '=', 'do_hta_dirs.hd_dID' );
   $join->on( 'category_lang.active', '=', DB::raw( '1' ) );
})