[英]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 个项目:
我有一个视图,我想首先显示所有类别,然后显示该类别中的所有项目。
所以我的观点会显示:
开胃菜:
- 洋葱圈
- 奶酪棒
三明治:
- 汉堡包
我无法弄清楚如何遍历这两个表,执行嵌套的 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
接下来,我有两个型号,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'));
}
}
最后,我的视图(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)”
在这一点上我真的很难过。 任何人都可以对我缺少的东西有所了解吗? 谢谢!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.