2013-05-27 55 views
0

我已經得到了下面的表格屬性:Laravel 4:獲取所有的產品以關係表

products (
    id 
) 

attributes (
    id 
    name 
    value 
) 

products_attributes (
    product_id, 
    attribute_id 
) 

,我需要能夠查詢所有特定產品的屬性。我試圖用FLUENT QUERY BUILDER來做這件事,但我迷失在自己的代碼中。

有人能幫我一個例子嗎?

回答

2

一般你會爲您的實體,您可以在其中指定關係的創建模型:

class Product extends Eloquent 
{ 
    protected $table = 'products'; 

    public function attributes() 
    { 
     return $this->belongsToMany('Attribute', 'products_attributes'); 
    } 
} 

class Attribute extends Eloquent 
{ 
    protected $table = 'attributes'; 

    public function products() 
    { 
     return $this->belongsToMany('Product', 'products_attributes'); 
    } 
} 

belongsToMany()方法建立了一個多到多的關係。第一個參數指定相關的模型類名,第二個參數指定保存兩個實體之間連接的數據庫表的名稱。

要找到ID爲1234的產品,你會喜歡這個取,

$product = Product::find(1234); 

然後,您可以神奇地訪問其所有屬性是這樣的:

$attributes = $product->attributes; 

欲瞭解更多信息,請可以參考the documentation

+0

我會小心的,因爲Eloquent使用內部'protected $ attributes = array();'這很可能會破壞這個。 – tomzx

相關問題