我在想如何在雄辯中執行子查詢。這裏是包含我想要執行的子查詢和我正在使用雄辯模型結構的數據庫的要點。使用laravel雄辯的mysql子查詢
//the query I want to execute
select p.title, c.total
from posts as p,
(select post_id as id, count(*) as total from comments group by post_id) as c
where p.id=c.id
//my table structures
table posts -
id title content
table comments -
id post_id content
//eloquent models
class Post extends Eloquent{
public static $timestamps = false;
public function comments(){
return $this->has_many('Comment', 'post_id');
}
}
class Comment extends Eloquent{
public static $timestamps = false;
public function post(){
return $this->belongs_to('Post', 'post_id');
}
}
基本上我想用雄辯來執行包含子查詢的查詢。我知道我可以使用DB :: query();方法來執行原始查詢或可能嘗試使用加入,但我想堅持雄辯。任何類型的架構建議都會受到歡迎,因爲我可能會錯過一種可以使用雄辯的方式獲得相同結果而不使用完全相同查詢的方式。
在此先感謝。
我不認爲這是可能的。沒有辦法。 – Gargron 2013-02-17 19:20:27
您將不得不創建自定義類方法並使用流暢的查詢構建器。這不會是你想要的,但會做你需要的。查看[Fluent查詢生成器](http://laravel.com/docs/database/fluent#aggregates) – Cristian 2013-02-18 17:18:56
另一個得到評論數的方法是'Post :: with('comments')'然後使用php在視圖上使用'count()'方法。 – Cristian 2013-02-18 17:20:48