代码之家  ›  专栏  ›  技术社区  ›  psudo

此集合实例上不存在属性[title]具有多个关系

  •  0
  • psudo  · 技术社区  · 6 年前

    Page.php 和PageCategory.php`具有以下关系:

    public function category() 
    {
        return $this->belongsTo('App\PageCategory','category_id', 'id');
    }
    

    public function page() 
    {
        return $this->hasMany('App\Page','id');
    }
    

    以下是上述型号的db表结构:

    id | title | content | category_id

    id | name

    我试图将所有类别名称打印为主菜单项,将属于其类别的页面名称打印为导航栏中的子菜单项。控制器中有以下代码:

    $pcategories = PageCategory::all();

    在视图中:

    @foreach($pcategories as $category)
    <div class="dropdown-menu">
      <ul>
        <li>
         <a href="#">{{ $category->page->title }}</a>
        </li>
      </ul>
    </div>
    @endforeach
    

    使用上面的代码,我遇到了错误消息 此集合实例上不存在属性[title] 如果有人能指出我所犯的错误,我将不胜感激。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Simon R    6 年前

    一个集合可以包含多个记录- $category->page

    你应该像这样在收藏品上兜圈子;

    @foreach($pcategories as $category)
    <div class="dropdown-menu">
      <ul>
        @foreach($category->page as $page)
        <li>
         <a href="#">{{ $page->title }}</a>
        </li>
        @endforeach
      </ul>
    </div>
    @endforeach