对于我正在研究的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');
}
}
甚至可以做我想要实现的目标吗?
答案 0 :(得分:0)
为什么不使用一对多的关系?有一张颜色表和一个品牌表,然后产品可以属于一个颜色和品牌。
如果您必须拥有多对多(产品可以有多个品牌或颜色),那么您可以再次拥有颜色和品牌表,然后使用连接表来建立关系。
这一点在Laravel 4文档中有所描述。