2016-05-16 2 views
0

Я понятия не имею, как решить эту проблему, используя Laravel Rloquent. Итак, я разместил здесь свой вопрос.
У меня есть таблицы, как это:Красноречивый: Подсчет строк на основе таблицы

+-------------+ +------------------------+ 
| 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  | 
       +------------------------+ 

Я в настоящее время есть 2 модели, пост модель

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

и комментарий модель

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

Вопрос заключается в том, что я должен делать на контроллер, чтобы я мог сделать каждый пост, имеет результат подсчета комментариев? Или просто, как в таблице ниже.

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

Спасибо.

+0

Вы создали таблицу Количество комментариев? –

ответ

0

Вы забыли вернуть отношения. Таким образом, модели должны быть определены как:

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

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

Теперь вы можете сосчитать комментировать, как:

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

или даже

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

Разница между этими 2 методами является то, что последний получает и кэширует комментарии к сообщениям.

+0

Спасибо за повторение. Я новичок в Laravel. Где поставить эхо? – Mdkusuma

+0

«Echo» - это просто пример .. вы можете считать эти комментарии там, где вам это нужно .. в модели или контроллере. –

+0

Я получаю только одно значение. возможно, есть что-то, что я пропустил – Mdkusuma

Смежные вопросы