2016-05-16 10 views
0

Ich habe keine Idee, wie man dieses Problem mit Laravel Eloquent löst. Also, ich habe meine Frage hier gepostet.
Ich habe Tabellen wie folgt aus:Eloquent: Zählen Sie Zeilenbasis auf Tabellenrelation

+-------------+ +------------------------+ 
| POSTS  | | COMMENTS    | 
|-------------| |------------------------| 
| id | title | | id | text | post_id | 
|-----+-------| |----+-------------------| 
| 1 | A  | | 1 | Lorem | 1  | 
| 2 | B  | | 2 | Ipsum | 1  | 
+-------------+ | 3 | Dolor | 1  | 
       | 4 | Sit  | 1  | 
       | 5 | Amet | 2  | 
       | 6 | Lorem 2 | 2  | 
       +------------------------+ 

Ich habe derzeit zwei Modelle, Post Modell

class Post extends Model 
{ 
    public function comment() { 
     $this->hasMany('App\Comment'); 
    } 
} 

und Kommentieren Modell

class Comment extends Model 
{ 
    public function comment() { 
     $this->belongsTo('App\Post'); 
    } 
} 

Die Frage ist, was soll ich auf tun der Controller, damit ich jedem Beitrag eine Kommentaranzahl geben kann? Oder einfach, genau wie die Tabelle unten.

+-----------------------------------------+ 
| COMMENT COUNT       | 
|-----------------------------------------| 
| posts.id | count(comments.post_id) AS n | 
|----------+------------------------------| 
| 1  | 4       | 
| 2  | 2       | 
+-----------------------------------------+ 

Danke.

+0

Haben Sie die Tabelle Comment Count erstellt? –

Antwort

0

Sie haben vergessen, die Beziehungen zurückzugeben. So sollten die Modelle werden wie folgt definiert:

class Post extends Model 
{ 
    public function comments() 
    { 
     return $this->hasMany('App\Comment'); 
    } 
} 

class Comment extends Model 
{ 
    public function post() 
    { 
     return $this->belongsTo('App\Post'); 
    } 
} 

Jetzt können Sie die Kommentare zu schreiben, wie zählen:

echo $post->comments()->count(); 

oder sogar

echo $post->comments->count(); 

Der Unterschied zwischen diesen zwei Verfahren ist, dass die Das neueste erhält und speichert auch die Post-Kommentare.

+0

Danke für die Wiederholung. Ich bin neu in Laravel. Wo setze ich das Echo? – Mdkusuma

+0

Das 'Echo' ist nur ein Beispiel .. Sie können diese Kommentare dort zählen, wo Sie es brauchen .. im Modell oder Controller. –

+0

Ich bekomme nur einen Wert. vielleicht gibt es etwas, das ich vermisse – Mdkusuma