У меня следующие отношения. User->hasMany(Posts)
и User->belongsToMany(Following)
. Теперь я хочу получить следующее. Получите всех следующих пользователей пользователя, у которого есть определенный тип post
. Я пришел к настоящему времениLaravel count Количество результатов от whereHas
$writers = $user
->following()
->with('posts')
->whereHas('posts' ,function($query){
$query->where('type','article');
})
->get();
Это нормально и возвращает только пользователей, у которых есть хотя бы одно сообщение типа статьи. Что я хочу здесь также в ответ
{
"id": 37,
"name": "Telis Xrysos",
"email": "[email protected]",
"url": "",
"personal_quote": "",
"profile_image_url": "/assets/images/user-no-image.jpg",
"private": "0",
"posts": [
{
"id": 238,
"description": "This is Tony Montana #Tony #Montana",
"source": "Tony Montana Quote",
"image_url": null,
"type": "article",
"likes": 0,
"comments": 0,
"user_id": 37,
"created_at": "2016-10-11 16:26:28"
}
]
}
Чтобы включить счетчик, сколько его постов являются статьи. Я мог бы сделать счет после атрибута posts
, хотя это только временное и впоследствии будет удалено.
Я попытался это, но все, что я получаю дополнительный атрибут для каждого пользователя articles_count = []
public function articlesCount()
{
return $this->posts()->selectRaw('id, count(*) as aggregate')->where('type','article')->groupBy('id');
}
$writers = $user
->following()
->with('posts')
->with('articlesCount')
->whereHas('posts' ,function($query){
$query->where('type','article');
})
->get();
Эта [ссылка] (http://laravel.io/forum/05-03-2014-eloquent-get-count-relation) может вам помочь! – Maraboc