2017-09-01 56 views
0

無法顯示從數據庫的信息,查看非對象的屬性,有一個錯誤Laravel 5.5關係 - ErrorException試圖讓

ErrorException 試圖讓非對象的屬性

讓我解釋的邏輯:

  1. 用戶可以創建多個公司
  2. 公司CAN H很多項目

我沒有將信息插入到數據庫的問題,一切都很好。 我可以在顯示視圖中顯示用戶表和公司表中的每個信息,但我無法在我的視圖中顯示來自Company_Items表的信息。 我猜我的關係或密鑰有問題,但是什麼? 試圖顯示屬於特定公司

{{$company->company_items->name}} 

公司表項目名稱:

  • ID(INT)
  • COMPANY_NAME(串)
  • 信息(文本)
  • USER_ID (int)

company_i TEMS表:

  • ID(INT)
  • COMPANY_ID(INT)
  • 名稱(字符串)

公司型號:

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

檢查在 – Sletheren

回答

0

$company->company_items是該公司的所有項目的列表,你不能把它設置了一個param。你聲明的名稱item而不是company_items

嘗試的關係要做到:

$company->item[0]->name 

@foreach($company->item as $item) 

{{ $item->name }} 

@endforeach 
+0

以下的答案感謝您的答案,您的解決方案也適用。 並感謝,告訴我關係名稱;) – qqmydarling

0

你做第一個錯誤是:

$company_items = Item::find($id); 

這將返回具有ID = $ id的公司商品,這意味着它將返回具有該商品的商品與公司相同的ID!我確定那不是你想要的。

相反,你可以這樣做:

$company_items = $company->item; 

將返回該公司

,並在你的看法,你可以用一個foreach循環訪問項目的所有項目:

@foreach($company_items as $item){ 
    {{$item->name}} 
} 
+0

例如: 我有2公司:三星(身份證1)和蘋果(身份證2)(價值表公司) 而我有一個項目:iPhone 6,iPhone 7,三星Galaxy s8,三星Galaxy s7(表中的值Company_items) 我想在僅顯示Apple頁面的iPhone和三星頁面中僅顯示Galaxy。 我有一個關係,所以iPhone有company_id 1和三星= company_id 2 – qqmydarling

+0

這正是我在答案隊友寫的。 可以說蘋果公司ID = 1所以Iphone 6將有company_id = 1 這就是這種關係的意思,只是粘貼我寫的代碼,它會工作:) – Sletheren

+0

好吧,可能不理解你我的英語原因,我會測試它並回答;) – qqmydarling