簡體   English   中英

在 Laravel (5.3) 中,如何通過兩個單獨的數據庫表執行循環並將結果發送到視圖中?

[英]In Laravel (5.3), how do I perform a loop through two separate DB tables and send the results into a view?

我對 Laravel 非常陌生,所以如果這是一個愚蠢的問題,請耐心等待。

這就是我最終想要做的。

我有兩個數據庫表:Categories 和 FoodItems。 為了簡單起見,讓我們說一下,我在 Categories 表中有兩個類別(開胃菜和三明治),在 FoodItems 表中有 3 個項目:

  • Onion Rings,它有一個指向 Appetizers 表的外鍵
  • Mozzarella Sticks,它有一個指向 Appetizers 表的外鍵
  • 漢堡包,它有一個指向 Sandwiches 表的外鍵

我有一個視圖,我想首先顯示所有類別,然后顯示該類別中的所有項目。

所以我的觀點會顯示:

開胃菜:
- 洋蔥圈
- 奶酪棒

三明治:
- 漢堡包

我無法弄清楚如何遍歷這兩個表,執行嵌套的 DB 調用,然后將此結構發送到我的視圖中,而不在視圖中實際執行任何邏輯。

有人能告訴我這里的最佳實踐是什么,將我訂購的數據納入我的視野嗎?




編輯/額外信息:

只是為了讓大家知道我在哪里(我還在掙扎)。 這是我所有的代碼。

首先,我設置了兩個數據庫表。 第一個稱為“ foodItems ”,第二個稱為“ foodCategories ”。

foodItems表包含以下列:
id、uniqueID、categoryID、clientID、itemName、itemDescription、itemAlias、thumbURL、itemSize、itemCost、itemPrice、isTaxable、hasSizes、hasDescriptors、status、created_at、updated_at

foodCategories表包含以下列:
id、uniqueID、clientID、categoryName、categoryAlias、status、created_at、updated_at

接下來,我有兩個型號,FoodItemFoodCategory。

我的FoodItem模型中的代碼如下所示:

    namespace App;

    use Illuminate\Database\Eloquent\Model;

     class FoodItem extends Model {
            protected $table = 'foodItems';

          public function foodCategory(){
                 return $this->belongsTo('App\FoodCategory');
            }
     }

我的FoodCategory模型中的代碼如下所示:

<?php
    namespace App;

    use Illuminate\Database\Eloquent\Model;

    class FoodCategory extends Model {
        protected $table = 'foodCategories';

        public function foodItem() {
                return $this->hasMany('App\FoodItem');
        }
    }

我的控制器中的代碼如下所示:

<?php
    namespace App\Http\Controllers;

    use Illuminate\Support\Facades\Auth;
    use Illuminate\Support\Facades\DB;
    use Illuminate\Http\Request;
    use App\FoodCategory;
    use App\FoodItem;

    class DashboardController extends Controller {

        public function __construct(){
            $this->middleware('auth');
        }

        public function food() {
            $food_items = FoodItem::orderBy('categoryID')->get();
            return view('food', compact('food_items'));
        }
    }

最后,我的視圖(food.blade.php)中的代碼是:

@foreach ($food_items as $food)
    <li>{{ $food->foodCategory->categoryName }}</li>
@endforeach

在我看來,我嘗試在“ foodCategory ”之后使用括號,我嘗試將名稱更改為“FoodCategory”、“FoodCategory()”、“foodCategories()”、“foodCategories”……以及我可以使用的所有其他組合想到 - 但似乎沒有任何效果。

由於代碼現在是,它會產生以下錯誤:

“試圖獲取非對象的屬性(視圖:/Applications/XAMPP/xamppfiles/htdocs/Laravel/ChanceSystems2017/resources/views/food.blade.php)”

在這一點上我真的很難過。 任何人都可以對我缺少的東西有所了解嗎? 謝謝!

您的問題可以通過使用關系來解決。 點擊此鏈接了解更多信息

這個視頻對我理解 laravel 中的關系有很大幫助。 希望對你也有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM