راکت

محاسبه مینگین امتیازات در لاراول

5 پاسخ

سلام دوستان
من چطوری میتونم همچین آرایه ای رو که دارم میانگین امتیازات هر دسته رو مجاسبه کنم ؟ به فرض کیفیت ساخت میخوام تمام امتیازاتی که توسط همه کاربران داده شده رو میانگین بگیرم
هر کدام از ابجکت های امتیاز به فرض (کیفیت ساخت ) بصورت داینامیک ساخه میشن و میتونه هر اسمی داشته باشه

[
{
"id": 3,
"user_id": 2,
"title": "کیفیت ساخت",
"created_at": "2020-04-26T23:59:21.000000Z",
"updated_at": "2020-04-26T23:59:21.000000Z",
"deleted_at": null,
"pivot": {
"comment_id": 12,
"score_id": 3,
"score_qty": 5
}
},
{
"id": 4,
"user_id": 2,
"title": "زیبایی ظاهر",
"created_at": "2020-04-26T23:59:47.000000Z",
"updated_at": "2020-04-27T00:02:06.000000Z",
"deleted_at": null,
"pivot": {
"comment_id": 12,
"score_id": 4,
"score_qty": 2
}
},
{
"id": 5,
"user_id": 2,
"title": "ابعاد و اندازه",
"created_at": "2020-04-27T00:59:01.000000Z",
"updated_at": "2020-04-27T00:59:01.000000Z",
"deleted_at": null,
"pivot": {
"comment_id": 12,
"score_id": 5,
"score_qty": 5
}
},
{
"id": 6,
"user_id": 2,
"title": "کارایی",
"created_at": "2020-04-27T00:59:09.000000Z",
"updated_at": "2020-04-27T00:59:09.000000Z",
"deleted_at": null,
"pivot": {
"comment_id": 12,
"score_id": 6,
"score_qty": 4
}
},
{
"id": 7,
"user_id": 2,
"title": "دوربین",
"created_at": "2020-04-27T01:04:07.000000Z",
"updated_at": "2020-04-27T01:04:07.000000Z",
"deleted_at": null,
"pivot": {
"comment_id": 12,
"score_id": 7,
"score_qty": 2
}
},
{
"id": 8,
"user_id": 2,
"title": "فیلم برداری",
"created_at": "2020-04-27T01:11:37.000000Z",
"updated_at": "2020-04-27T01:11:37.000000Z",
"deleted_at": null,
"pivot": {
"comment_id": 12,
"score_id": 8,
"score_qty": 5
}
},
{
"id": 3,
"user_id": 2,
"title": "کیفیت ساخت",
"created_at": "2020-04-26T23:59:21.000000Z",
"updated_at": "2020-04-26T23:59:21.000000Z",
"deleted_at": null,
"pivot": {
"comment_id": 13,
"score_id": 3,
"score_qty": 4
}
},
{
"id": 4,
"user_id": 2,
"title": "زیبایی ظاهر",
"created_at": "2020-04-26T23:59:47.000000Z",
"updated_at": "2020-04-27T00:02:06.000000Z",
"deleted_at": null,
"pivot": {
"comment_id": 13,
"score_id": 4,
"score_qty": 2
}
},
{
"id": 5,
"user_id": 2,
"title": "ابعاد و اندازه",
"created_at": "2020-04-27T00:59:01.000000Z",
"updated_at": "2020-04-27T00:59:01.000000Z",
"deleted_at": null,
"pivot": {
"comment_id": 13,
"score_id": 5,
"score_qty": 4
}
},
{
"id": 6,
"user_id": 2,
"title": "کارایی",
"created_at": "2020-04-27T00:59:09.000000Z",
"updated_at": "2020-04-27T00:59:09.000000Z",
"deleted_at": null,
"pivot": {
"comment_id": 13,
"score_id": 6,
"score_qty": 4
}
},
{
"id": 7,
"user_id": 2,
"title": "دوربین",
"created_at": "2020-04-27T01:04:07.000000Z",
"updated_at": "2020-04-27T01:04:07.000000Z",
"deleted_at": null,
"pivot": {
"comment_id": 13,
"score_id": 7,
"score_qty": 2
}
},
{
"id": 8,
"user_id": 2,
"title": "فیلم برداری",
"created_at": "2020-04-27T01:11:37.000000Z",
"updated_at": "2020-04-27T01:11:37.000000Z",
"deleted_at": null,
"pivot": {
"comment_id": 13,
"score_id": 8,
"score_qty": 5
}
},
{
"id": 3,
"user_id": 2,
"title": "کیفیت ساخت",
"created_at": "2020-04-26T23:59:21.000000Z",
"updated_at": "2020-04-26T23:59:21.000000Z",
"deleted_at": null,
"pivot": {
"comment_id": 14,
"score_id": 3,
"score_qty": 2
}
},
{
"id": 4,
"user_id": 2,
"title": "زیبایی ظاهر",
"created_at": "2020-04-26T23:59:47.000000Z",
"updated_at": "2020-04-27T00:02:06.000000Z",
"deleted_at": null,
"pivot": {
"comment_id": 14,
"score_id": 4,
"score_qty": 4
}
},
{
"id": 5,
"user_id": 2,
"title": "ابعاد و اندازه",
"created_at": "2020-04-27T00:59:01.000000Z",
"updated_at": "2020-04-27T00:59:01.000000Z",
"deleted_at": null,
"pivot": {
"comment_id": 14,
"score_id": 5,
"score_qty": 4
}
},
{
"id": 6,
"user_id": 2,
"title": "کارایی",
"created_at": "2020-04-27T00:59:09.000000Z",
"updated_at": "2020-04-27T00:59:09.000000Z",
"deleted_at": null,
"pivot": {
"comment_id": 14,
"score_id": 6,
"score_qty": 2
}
},
{
"id": 7,
"user_id": 2,
"title": "دوربین",
"created_at": "2020-04-27T01:04:07.000000Z",
"updated_at": "2020-04-27T01:04:07.000000Z",
"deleted_at": null,
"pivot": {
"comment_id": 14,
"score_id": 7,
"score_qty": 4
}
},
{
"id": 8,
"user_id": 2,
"title": "فیلم برداری",
"created_at": "2020-04-27T01:11:37.000000Z",
"updated_at": "2020-04-27T01:11:37.000000Z",
"deleted_at": null,
"pivot": {
"comment_id": 14,
"score_id": 8,
"score_qty": 1
}
}
]
ثبت پرسش جدید

پاسخ‌ها

5
محسن بستان
محسن بستان
@mohsenbostan

تخصص: Senior Backend Developer

@rabco
سلام.
از روش زیر استفاده کنید.

$average = ModelName::all()->sum('score_qty') / ModelName::all()->count();
rabco
rabco
@rabco

تخصص: Full Stack developer

عذر میخوام ی جا رو توضیح ندادم من برای هر محصول این کار رو باید کنم و این که هر کاربر به تعداد نا محدود میتونه نطر رو ارسال کنه و امتیاز بده

شاید پاسخ شما همین‌جا باشد

علی بیات
علی بیات
@ali.bayat

تخصص: توسعه دهنده ارشد وب

متد avg در کالکشن میانگین رو برات برمیگردونه

$average = collect([1, 1, 2, 4])->avg();
// return 2

// 1 + 1 + 2 + 4 = 8
// 8 / 4 = 2

الکوئنت هم که داده ها رو به شکل کالکشن برمیگردونه.. پس میتونی از متد avg استفاده کنی.

یا میتونی فیلد score_qty رو pluck کنی و نتایج رو به آرایه تبدیل کنی.. اون آرایه رو بریزی توی یه کالکشن و بعدش از avg استفاده کنی.. شبیه زیر:

$array = Model::pluck('score_qty')->toArray();
$collection = collect($array);
$average = $collection->avg();

اطلاعات بیشتر در مستندات:
https://laravel.com/docs/7.x/collections#method-avg

rabco
rabco
@rabco

تخصص: Full Stack developer

ممنونم ولی درست متوجه نشدم من میخوام از هر کدوم مثلا (کیفیت ساخت ) بیاد تمام کیفیت ساخت هایی که داخل نظرات برای یک محصول هستن رو با هم میانگینشون رو حساب کنه و همینطور برای باقی موارد اخر سر تنها میانگین اون مورد رو به من بده
عذر میخوام زیاد سوال می پرسم

علی بیات
علی بیات
@ali.bayat

تخصص: توسعه دهنده ارشد وب

شما برای گرفتن اطلاعاتی که میخوای باید یه کوئری بسازی
و بعد یه فیلد رو انتخاب کنی
و بعد هم میانگینش رو بگیری که بالا توضیح دادم

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام