как получить доступ к нескольким элементам массива в блейд-файле laravel - PullRequest
0 голосов
/ 24 апреля 2020

Output

Рейтинг модель

class Rating extends Model
{
    protected $fillable = [
        'owner_id', 'toilet_id','user_id','rating','desc',
    ];

    public function toilet()
    {
        return $this->belongsTo(ToiletInfo::class);
    }
}

ToiletInfo модель

class ToiletInfo extends Model
{
    protected $fillable = [
        'owner_id', 'toilet_name','price','complex_name','address','toilet_lat','toilet_lng','status',
    ];

    public function owner()
    {
        return $this->belongsTo(ToiletOwner::class);
    }

    public function ratings()
    {
        return $this->hasMany(Rating::class,'toilet_id');
    }
}

RatingController

public function index()
{

    return $toilets = ToiletInfo::with('ratings')->get();

    //return view('admin.rating',compact('toilets'));
}

enter image description here

Я хочу получить среднее значение рейтинг , но как получить доступ к элементам внутри оценок []

или помочь мне улучшить метод, который я использую для получения оценок для туалетов, которые проверяются пользователями

1 Ответ

2 голосов
/ 24 апреля 2020

Из того, что я понимаю из вашего вопроса, вы хотите получить среднюю оценку.

В вашей модели ToiletInfo добавьте новый метод:

public function getAverageRating()
{
    $ratings = $this->ratings;
    $count = $ratings->count(); // total count
    $total_ratings = $ratings->sum('rating'); // add the 'rating' for all rows
    return $total_ratings / $count; // average

}

В файле блейда: Вы можете просто сделать

$toilet->getAverageRating()

, который даст средний рейтинг.

...