我对Laravel非常陌生,所以如果这是一个愚蠢的问题,请耐心等待。
这是我最终要做的事情。
我有两个数据库表:Categories和FoodItems。让我们说,为了简单起见,我在Categories表中有两个类别(开胃菜和三明治),我在FoodItems表中有3个项目:
我有一个视图,我想首先显示所有类别,然后显示该类别中的所有项目。
所以我的观点会显示:
开胃:
- 洋葱圈
- Mozzarella Sticks
三明治:
- 汉堡包
我无法弄清楚如何遍历这两个表,执行嵌套的数据库调用,然后将此结构发送到我的视图中,而不在视图中实际执行任何逻辑。
有人可以告诉我这里的最佳做法是什么,把我订购的数据放到我的视野中?
编辑/额外信息:
只是为了让每个人都知道我在哪里(我仍在努力)。这是我的所有代码。
首先,我设置了两个数据库表。第一个叫做“ 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
接下来,我有两个模型, FoodItem 和 FoodCategory 。
我的 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'));
}
}
最后,我在View(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)”
我真的很难过。请问有人可以了解我所缺少的内容吗?谢谢!