rabco
5 سال پیش توسط rabco مطرح شد
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
}
}
]

ثبت پرسش جدید
محسن بستان
تخصص : Senior Backend Developer
@mohsenbostan 5 سال پیش آپدیت شد
0

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

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

rabco
تخصص : Full Stack developer
@rabco 5 سال پیش مطرح شد
0

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


علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 5 سال پیش مطرح شد
1

متد 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
تخصص : Full Stack developer
@rabco 5 سال پیش آپدیت شد
0

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


علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 5 سال پیش آپدیت شد
0

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


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

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