【问题标题】:Property [business_url] does not exist on this collection instance此集合实例上不存在属性 [business_url]
【发布时间】:2018-10-12 05:11:39
【问题描述】:

我的企业可以有很多页面,我在这里定义我的模型:

class PageList extends Model
{
    public function business()
    {
        return $this->hasMany('App\Business','business_id');
    }
}

我的控制器

public function pageListHere()
{
    $list = PageList::all();
    return view('page-list',compact('list'));
}

我对每个循环的看法

<td>{{optional($value->business)->business_url}}.spikesales.io/{{$value->page_url}}</td>

在我的关系中,如果我这样做 hasOne('App\Business','business_id'); 它工作正常,但它只显示一页反对业务,但我的数据库中有多个页面,一个业务可以有很多页,如果写 hasMany('App\Business','business_id'); 它会显示错误此集合实例上不存在属性 [business_url]

我想针对一项业务显示多个页面。 非常感谢您的帮助!

【问题讨论】:

    标签: php laravel relationship


    【解决方案1】:

    您需要循环/迭代业务关系,因为结果将以集合数组的形式返回:

    @foreach($lists as $list)
       // others markup
       @foreach($list->business as $business)
          // do something here
          {{ $business->business_url }}
       @endforeach
    @endforeach
    

    【讨论】:

      【解决方案2】:

      我觉得你有点困惑。在您的模型中,您实际上是在定义关系 A page has many businesses,并且您告诉 businesses 表有一个列 business_id,Laravel 试图找到但找不到,从而导致错误。


      hasMany 函数是这样工作的:

      // In the Post Model...
      public function comments() {
          return $this->hasMany('App\Comment', 'post_number');
      }
      

      这使得关系 A Post has many Comments 并使 Laravel 假设 comments 表有 post_number


      您希望针对一项业务显示多个页面。所以,A business has many Pages. 来编码...

      // In your BUSINESS model...
      public function pages() {
          // Notice that $this refers to the Business Model
          return $this->hasMany('App\PageList', 'business_id');
      }
      

      您可以选择(但我认为您应该)省略'business_id' 部分。默认情况下会安全地假定它。

      关系的倒数,A Page belongs to A business,将被编码为...

      // In your PAGELIST model...
      public function business() {
          return $this->belongsTo('App\Business');
      }
      

      【讨论】:

        猜你喜欢
        • 2020-11-12
        • 2019-03-23
        • 2020-07-11
        • 2017-05-12
        • 2021-02-08
        • 2021-12-16
        • 2021-09-14
        相关资源
        最近更新 更多