【发布时间】:2018-09-13 13:20:20
【问题描述】:
我正在尝试使用 eloquent 进行查询,我尝试获取所有拥有一个或多个广告的用户,同时考虑到这是一对多的关系(用户与广告)。
这个查询通常做我想要的,但我不知道它是否做得很好,也不知道如何通过用户模型将它传递给 Eloquent。
SELECT users.id, COUNT( anuncio.id ) AS 'total' FROM users
INNER JOIN anuncio ON users.id = anuncio.usuario_id WHERE
(SELECT COUNT( * ) FROM anuncio WHERE anuncio.usuario_id = users.id) >0
GROUP BY users.id ORDER BY total DESC
我尝试了几种只将 Builder 返回给我的方法。 例如:
$listas = new User;
$listas = $listas->join('anuncio','users.id','=','anuncio.usuario_id');
$listas = $listas->select(array('users.*', DB::raw('COUNT(anuncio.id) AS total')));
$listas = $listas->where(function($query) use ($listas){
$query->select(DB::raw('COUNT(anuncio.usuario_id)'))
->where('anuncio.usuario_id','=','users.id')
->groupBy('anuncio.usuario_id');
},'>','0');
$listas = $listas->orderBy('total','DESC')->paginate(48);
如有任何建议,我将不胜感激。
【问题讨论】: