为了账号安全,请及时绑定邮箱和手机立即绑定

如何从 laravel 的菜单中获取餐厅的平均价格?

如何从 laravel 的菜单中获取餐厅的平均价格?

PHP
喵喵时光机 2022-07-02 15:28:43
如何获得餐厅的平均价格?查询时不执行循环餐厅有很多菜单。菜单有很多费率。在样板餐厅public function menus(){    return $this->hasMany('App\Models\Menu', 'fk_restaurant');}在模型菜单中public function reviews(){    return $this->hasMany('App\Models\Rate', 'fk_service');}RestaurantController 中的代码$mostRatedRestaurants = Restaurant::where('status', 1)->with('menus')->get();在添加问题之前我正在搜索但是当尝试任何解决方案时出现错误“调用 int 上的成员函数 addEagerConstraints()”谢谢,高级。
查看完整描述

2 回答

?
慕姐8265434

TA贡献1813条经验 获得超2个赞

你好,你能测试一下吗:


$mostRatedRestaurants = Restaurant::App\Menu::find(1);


$mostRatedRestaurants->where('status', 1)->get();


问候


查看完整回答
反对 回复 2022-07-02
?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

解决了,谢谢各位。


我是创建方法


    public function getAvgRate($mostRatedRestaurants){

        foreach ($mostRatedRestaurants as $mostRatedRestaurant){

            $ratedRestaurant = 0;

            $countMenuHasRate = 0;

            $avgRateRestaurant = 0;

            foreach($mostRatedRestaurant->menus as $menu){

                // عدد تقييمات الوجبة

                $countReviewForMenu = count($menu->reviews);

                $rate = 0;

                foreach($menu->reviews as $reviews){

                    $rate += $reviews->rate;

                }

                if(count($menu->reviews) !== 0){

                    $rateForMenu = round($rate/$countReviewForMenu); // rate Menu;

                    $countMenuHasRate += 1;

                    $ratedRestaurant += $rateForMenu;

                }

            }

            if($ratedRestaurant !== 0) {

                $avgRateRestaurant = round($ratedRestaurant / $countMenuHasRate);

            }

            $mostRatedRestaurant['rate'] = $avgRateRestaurant ?? 0;

        }

        return $mostRatedRestaurants;

    } // End Method getAvgRate

和内部方法索引


$mostRatedRestaurants = Restaurant::where('status', 1)->with('profileImage', 'menus')->get();

$mostRatedRestaurants = $this->getAvgRate($mostRatedRestaurants); // Add Rate

$mostRatedRestaurants = $mostRatedRestaurants->sortByDesc('rate')->take('9'); // Sort Rate


return view('user.content.restaurant.index', compact('mostRatedRestaurants'));

在刀片中 用于回波率


@php

    $rate = 5 - $mostRatedRestaurant->rate;

@endphp

@for ($i = 1; $i <= $rate; $i++)

    <li class="far fa-star text-secondary float-left text-left"></li>

@endfor


@php 

  $rate = $mostRatedRestaurant->rate;

@endphp

@for ($i = 1; $i <= $rate; $i++)

    <li class="fa fa-star"></li>

@endfor

你可以改进代码再次感谢。


查看完整回答
反对 回复 2022-07-02
  • 2 回答
  • 0 关注
  • 85 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信