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')代码>它工作正常,但它只显示一个针对业务的页面,但我的数据库中有多个页面,一个业务可以有多个页面,如果writehasMany('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');
}