- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我的业务可以有很多页面,我在这里定义我的模型:
class PageList extends Model
{
public function business()
{
return $this->hasMany('App\Business','business_id');
}
}
我的 Controller
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');
它会显示错误 Property [business_url] does not exist on this collection instance
我想针对一项业务显示多个页面。非常感谢您的帮助!
最佳答案
我觉得你有点糊涂了。在您的模型中,您实际上定义了关系A page has many business
,并且您告诉 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
列。
您想针对一项业务显示多个页面。因此,一个企业有很多页面
。要对其进行编码...
// 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 A business
,将被编码为...
// In your PAGELIST model...
public function business() {
return $this->belongsTo('App\Business');
}
关于php - 此集合实例上不存在属性 [business_url],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50128763/
我的业务可以有很多页面,我在这里定义我的模型: class PageList extends Model { public function business() {
我是一名优秀的程序员,十分优秀!