Php 此集合实例上不存在属性[business_url]

Php 此集合实例上不存在属性[business_url],php,laravel,relationship,Php,Laravel,Relationship,我的业务可以有很多页面,在这里我定义了我的模型: class PageList extends Model { public function business() { return $this->hasMany('App\Business','business_id'); } } 我的控制器 public function pageListHere() { $list = PageList::all(); return view(

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

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>
{{optional($value->business)->business\u url}.spikesales.io/{{$value->page\u url}
在我的关系中,如果我做了hasOne('App\Business','Business\u id')它工作正常,但它只显示一个针对业务的页面,但我的数据库中有多个页面,一个业务可以有多个页面,如果write
hasMany('App\business','business_id')它显示此集合实例上不存在错误属性[business_url]

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

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

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

我觉得你有点困惑。在您的模型中,您实际上是在定义关系
一个页面有许多业务
,并且您告诉我们
业务
表有一个列
业务id
,Laravel试图找到该列,但找不到,导致了一个错误


有许多功能,其工作方式如下:

// In the Post Model...
public function comments() {
    return $this->hasMany('App\Comment', 'post_number');
}
这使得关系
一篇文章有许多评论
,并使Laravel假设
评论
表有
文章编号


您希望针对一个业务显示多个页面。因此,
一个企业有许多页面来编码它

// In your BUSINESS model...
public function pages() {
    // Notice that $this refers to the Business Model
    return $this->hasMany('App\PageList', 'business_id');
}
您可以选择(但我认为您应该)省略
'business\u id'
部分。默认情况下,可以安全地假定它

关系的倒数,
一个页面属于一个企业
,将被编码为

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