Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Лара 5.2+, для Лары ниже надо модифицировать код, но в целом прокатит вся конструкция.
class Post extends Model
{
/**
* @return \Illuminate\Database\Eloquent\Relations\HasOne
*/
public function commentsCountRelation()
{
// Используем hasOne, вместо hasMany, потому что надо вернуть одно поле одной строки
return $this->hasOne( Comment::class )->select( DB::raw('id, count( * ) as count'))->groupBy( 'id' );
}
/**
* Магический метод, который перехватывает обращение к аттрибуту модели и соответственно его обрабатывает в классе-родителе
* @return integer
*/
public function getCommentsCountAttribute()
{
if ( !is_null( $this->commentsCountRelation->first() ) )
{
return $this->commentsCountRelation->first()->count;
} else return 0;
}
}
// В итоге механизм использования Eager Loading
$Post = Post::with( 'commentsCountRelation' )->find( $id );
echo $Post->commentsCount;
Инклюженная с ->with() Реляция всегда будет пустая (null). Это нормально.
Ваши комментарии?
Админу: есть смысл делать раздел готовых решений. А то замучали одними и теми же вопросами; отключать нахрен поиск - пусть читают весь форум; Вводить теги к темам и комментариям.
Изменено hzone (14.12.2016 17:46:59)
Не в сети
Не в сети
теги про форум имел ввиду, чтобы искали по имеющимся тегам, а не придумывали чебурашек
Не в сети