使用Laravel Eloquent ORM查询

时间:2014-09-16 13:15:08

标签: laravel eloquent

如何使用Eloquent ORM在Laravel中进行此查询?

select * from posts p order by ( select count(*) from likes where flag = 'c' and p.id = post_id ) Desc limit 3

我在模特中有这种关系

post.php中

public function likes(){
    return $this->hasMany('Like', 'post_id');
}

Like.php

public function post(){
    return $this->belongsTo('Post', 'post_id');
}

谢谢! :)

1 个答案:

答案 0 :(得分:0)

您可以尝试这样的事情:

$posts = Post::leftJoin('likes', function($join) {
        $join->on('posts.id', '=', 'likes.post_id')->where('flag', '=', 'c');
    })
    ->select('posts.*', 'likes.post_id', DB::raw('count(likes.post_id) as pCount'))
    ->groupBy('post_id')
    ->orderBy('pCount', 'desc')
    ->take(3)
    ->get();