无法显示来自DB的信息以查看,出现错误
ErrorException 试图获得非对象的属性
让我解释一下逻辑:
我没有将信息插入数据库的问题,一切都很好。 我可以在Show View中显示Users表和Company表中的每个信息,但是我无法在视图中显示Company_Items表中的信息。 我猜我的关系或钥匙有问题,但是什么? 试图显示属于特定公司的项目名称
{{$company->company_items->name}}
公司表:
Company_items表:
公司型号:
class Company extends Model
{
protected $table = 'company';
//relation. MANY companies can be created by ONE user
public function user(){
return $this->belongsTo('App\User');
}
//relation. ONE company can have MANY items
public function item(){
return $this->hasMany('App\Item');
}
}
物品型号:
class Item extends Model
{
protected $table = 'company_items';
//relation. MANY items can be applied TO ONE company
public function company(){
return $this->belongsTo('App\Company');
}
}
控制器:
public function show($id)
{
$company = Company::find($id);
$user = User::find($id);
$company_items = Item::find($id);
return view('company_show')->with(['company' => $company,'company_items' => $company_items]);
}
查看:
This is <b>{{$company->company_id}}</b> page info created by <b>{{$company->user->name}}</b><br>
Company category is <b>{{$company->company_category}}</b>.<br>
Item name is <b>{{$company->company_items->name}}</b>. // Can't display this expression
答案 0 :(得分:0)
$company->company_items
是公司所有项目的列表,您无法在其上调用参数。并且您使用名称item
而不是company_items
尝试:
$company->item[0]->name
或
@foreach($company->item as $item)
{{ $item->name }}
@endforeach
答案 1 :(得分:0)
您犯的第一个错误是:
$company_items = Item::find($id);
这将返回ID = $ id的公司Item,这意味着它将返回与公司具有相同ID的Item!我确定那不是你想要的。
相反,你可以这样做:
$company_items = $company->item;
将返回该公司的所有项目
在您的视图中,您可以使用foreach循环访问项目:
@foreach($company_items as $item){
{{$item->name}}
}