2013-05-27 53 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

相关问题