亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何從 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 關注
  • 123 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號