Laravel 4 Eloquent多对多条件参数

时间:2013-04-30 18:50:15

标签: php laravel relationship laravel-4 eloquent

对于我正在研究的Laravel应用程序,我想用我的Eloquent模型做这样的事情:

$product = Product::with('terms')->find(1);

$brand = $product->terms('brand');
$color = $product->terms('color');

这些条款是多对多的关系。在这种情况下,术语是分类法。所以产品术语可能是:Nike,Red,Boys等。 如果我做$product->terms我会得到所有条款,而当我$product->terms('brand')时,我会得到'耐克'。

现在我的产品型号是这样的:

class Product extends Eloquent {
    protected $guarded = array();

    public static $rules = array();

    public function terms($taxonomy)
    {
        return $this->belongsToMany('Term', 'productterms');
    }

}

甚至可以做我想要实现的目标吗?

1 个答案:

答案 0 :(得分:0)

为什么不使用一对多的关系?有一张颜色表和一个品牌表,然后产品可以属于一个颜色和品牌。

如果您必须拥有多对多(产品可以有多个品牌或颜色),那么您可以再次拥有颜色和品牌表,然后使用连接表来建立关系。

这一点在Laravel 4文档中有所描述。