2016-05-27 20 views
0

に参加するには、カウント結果を組み合わせます---------- 10
news2 ---------------- 2
news3 ---------------- 13
news4 ---------------- 25は------ <br> news1コメント-------------私はコメント</p> <p>記事の数とニュースのリストのようなものを取得したいlaravel

私はraw SQLでそれを行う方法を知っていますが、laravelで作成することはできません。 laravelは生のクエリを処理できますが、私はそれをクエリ全体に使用したくありません。ここ
は私の現在のスニップコードです:

$newslist = News::where('status_id', 2)->orderBy('id', 'desc')->skip(0)->take($itemPerLoad) 
     ->join('msuser', 'msuser.id', '=', 'news.user_id') 
     ->select(....)->get(); 

私は参加できませんので、私は(参加コメントテーブルと、上記のように書かれていない)

->select('news.id', 'count(mscomment.id) as commented', ...) 

を選択する方法に置か数を試してみましたが、エラーを持っていますそれは、現在、私はそれをカウントし

$commented = Comment::where('news_id', $news->id)->count(); 

が、私はそれを再しますので、番号を取得するには、そのことは良い方法だと思いJSONレスポンスにそれを設定するために別のコードを使用します各ループコントローラで次に

+0

** selectRaw **を次のように使ってみましたか: - > selectRaw( 'news.id'、 'count(mscomment.id)as commented' '。 – TheFallen

+0

それは私にこのエラーを与えます:イルミネーション\ Database \ Query \ Builder :: selectRaw()に渡された引数2は、型配列 –

+1

与えられた型でなければなりません申し訳ありませんが、これは私の間違いです。 ' - > selectRaw( 'news.id、count(mscomment.id)as commented')'のように、すべての列を単一の文字列に渡します。 – TheFallen

答えて

0

使用雄弁relations

News.php

public function comments() 
{ 
    return $this->hasMany('NAMESPACE_TO_YOUR_MODEL\Comment'); 
} 

ためのクエスト数

$news = News::with('comments')->get(); 
$summary = []; 
foreach($news as $n) 
{ 
    $summary[] = ['article' =>$n->article, 'comments' => $n->comments->count()]; 
} 

か、ビューで繰り返すことができます:

@foreach($news as $n) 
    <tr> 
     <td> {{ $n->article }} </td> 
     <td> {{ $n->>comments->count() }} </td> 
    </tr> 
@endforeach 

私はこの方法が標準的だと思います

+0

この作業は必要に応じて有効です。また、雄弁な関係の特徴に気付かせてください。ありがとうございました –

関連する問題