【发布时间】:2017-02-05 23:35:50
【问题描述】:
想弄清楚这一点我快疯了。我发誓似乎我已经正确设置了所有内容 - 但我一生都无法在没有错误的情况下加载我的视图。
我设置了两个数据库表。第一个称为“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)”
在这一点上我真的很难过。有人可以解释一下我所缺少的吗?谢谢!
【问题讨论】:
-
您只需要验证每个
foodItem都有一个与之关联的foodCategory。检查数据库中的这些记录。您收到错误消息,因为至少有一个foodItem没有foodCategory。 -
@linuxartisan 我检查了我的数据库,我的 foodItem 表中的所有记录都有一个有效的 category_id。我的 foodItem 表中只有 3 个项目,并且它们只能包含两个可能的类别。我什至在我的视图中运行了以下代码: foreach ($food_items as $food)
- {{ $food->category_id }}
endforeach 它正确显示了 3 个列表项,所有项都具有有效的 category_id。所以 - 回到被难倒:-(
标签: laravel model-view-controller laravel-5.3 relationships