2016-04-09 47 views
3

在我的項目中,我的訂單中有許多產品和訂單數量很多的客戶。我很困惑,因爲我想獲得某個客戶的所有訂單以及每個訂單的產品。我搞砸了某個地方,我不知道我是否正確設置了我的關係。這裏是我的產品表:在Laravel中無法在模型中顯示數據

enter image description here

這裏是我的客戶表:

enter image description here

這裏是我的訂單表:

enter image description here

這裏是我的模型:

產品:

class Product extends Model 
{ 
    public function orders() 
    { 
     return $this->belongsToMany('App\Order'); 
    } 
} 

訂單:

class Order extends Model 
{ 
    public function products() 
    { 
     return $this->hasMany('App\Product', 'id'); 
    } 

    public function customer() 
    { 
     return $this->belongsTo('App\Customer'); 
    } 
} 

客戶:

class Customer extends Model 
{ 
    public function orders() 
    { 
     return $this->hasMany('App\Order', 'id'); 
    } 
} 

我從我的數據庫中的所有客戶與我CustomersController App\Customer::all()在我customers.blade傳遞數據.PHP。

<h1>Customers:</h1> 
    @foreach($customers as $customer) 
     <h3>{{$customer->name}}</h3> 
     @foreach($customer->orders as $order) 
     <p>Order ID: {{$order->id}}</p> 
      @foreach($order->products as $product) 
      <p>Product title: {{$product->title}}</p> 
      @endforeach 
     @endforeach 
     <hr> 
    @endforeach 

這裏是輸出:

enter image description here

如果有人可以解釋爲什麼它不輸出的一切,給一些建議,如果這是去的關係的方式,我會非常感謝。

+0

嘗試將{{}}更改爲{!!} !!} –

+0

爲了改變模型'return $ this-> hasMany('App \ Product','id');'to'return $ this-> hasMany('App \ Product');' –

回答

0

我通過一種名爲products_orders產品和訂單數據透視表,其持有的product_id和ORDER_ID並作出許多產品和訂單之間的多對多關係找到了解決辦法。這是因爲訂單可能有多個產品,產品可能存在多個訂單。 我的透視表products_orders:

enter image description here

class Product extends Model 
{ 
    public function orders() 
    { 
     return $this->belongsToMany('App\Order'); 
    } 
} 

class Order extends Model 
{ 
    public function products() 
    { 
     return $this->belongsToMany('App\Product', 'products_orders'); 
    } 

    public function customer() 
    { 
     return $this->belongsTo('App\Customer'); 
    } 
} 

我做了一個爲客戶和訂單一對多的關係(CUSTOMER_ID訂單表),現在一切工作正常。

class Customer extends Model 
{ 
    public function orders() 
    { 
     return $this->hasMany('App\Order'); 
    } 
} 
1

您的產品應該屬於訂單,而不是擁有多對多的關係。

class Product extends Model 
{ 
    public function orders() 
    { 
     return $this->belongsTo('App\Order'); 
    } 
} 
+0

我改變了它,但是它仍然不會按照客戶的訂單打印所有產品。 – Codearts

+0

對不起,以前沒有回覆,我已經離開了一天。沒有意識到你實際上需要一個多對多的關係,但我很高興你自己找到了正確的答案。 :) –

相關問題