【发布时间】:2019-08-11 19:00:06
【问题描述】:
我是早期的 Laravel 开发人员(学习),在处理 Eloquent 模型之间的关系时遇到了一些麻烦。我将不胜感激一些帮助。
创建一个包含一堆食谱的网站,我目前正致力于根据类别(早餐、午餐、晚餐等)分离不同的视图。在视图中,每个菜谱都可以显示菜谱标题和菜谱的创建者。我有一个用户模型、配方模型和类别模型。在我的早餐.blade.php 视图中,我试图在 @if 语句中访问 $recipe->category->name 以整理出相关的食谱。它给我一个错误,并说“此集合实例上不存在属性 [类别]”。 我来自控制器、视图和模型的代码发布在下面:
配方模型
namespace App;
use Illuminate\Database\Eloquent\Model;
class Recipe extends Model
{
//Table Name
protected $table = 'recipes';
// Primary Key
public $primaryKey = 'id';
// Timestamps
public $timestamps = true;
public function user(){
return $this->belongsTo('App\User', 'id');
}
public function category(){
return $this->belongsTo('App\Category');
}
}
分类模型
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Category extends Model
{
protected $table = 'categories';
public function recipes(){
return $this->hasMany('App\Recipe');
}
}
CategoryController 的顶部
<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\DB;
use Illuminate\Http\Request;
use App\Recipe;
use App\Category;
use App\User;
use App\Auth;
class CategoryController extends Controller
{
public function showBreakfast(){
$recipes = Recipe::all();
$users = User::all();
return view('recipes.categories.breakfast')->with('recipes',
$recipes);
}
还有我的@if 语句和@foreach 循环的开头(这是引发错误的地方)
@section('content')
<section>
<div class="container">
<div class="row">
@if(count($recipes) > 0 && $recipes->category->name == 'Breakfast')
@foreach($recipes as $recipe)
如果有任何帮助,我将不胜感激!我一直在搞乱控制器、Eloquent 模型,并将变量传递给视图,有时我让它工作,有时我没有。我似乎不了解如何有效使用它的基本规则。再次,我非常感谢任何帮助! :) 如果我需要澄清这个问题,请告诉我!
【问题讨论】: