【发布时间】:2014-10-23 06:57:38
【问题描述】:
我目前正在使用 laravel 4 我正在尝试检索带有约束的集合,但它没有按预期工作
模型特征:
public function valeur() {
return $this->hasMany('Valeur','id_caracteristique','id');
}
模型价值
public function caracteristique() {
return $this->belongsTo('Caracteristique','id','id_caracteristique');
}
public function produit() {
return $this->belongsToMany('Produit','produit_valeur');
}
型号类别
public function produit() {
return $this->belongsToMany('Produit','produit_categorie');
}
模型产品
public function valeur() {
return $this->belongsToMany('Valeur','produit_valeur');
}
我想要:
Caracteristique,其中 categorie = x 到 produit 的值
最终目标:能够像
一样解析集合特征->价值;
在 SQL 中
SELECT c.id,v.id FROM caracteristique c
INNER JOIN valeur v on (v.id_caracteristique = c.id)
INNER JOIN produit_valeur pv on (pv.valeur_id = v.id)
INNER JOIN produit_categorie pc on (pc.produit_id = pv.produit_id)
GROUP by c.id
当我在雄辩的关系中使用加入时不再可用
我已经试过了:
$carac = Caracteristique::with(array('valeur.produit.categorie' => function($q) {
$q->whereCategorieId(2);
}))->get();
但是没有遵守约束..
有什么想法吗?
问候,
找到这个糟糕的解决方案...
$values = Valeur::whereHas('produit',function($q) {
$q->whereHas('categorie',function($q) {
$q->where('categorie.id','=',2);
});
})->lists('id');
$carac = Caracteristique::with(array('valeur' =>function ($q) use($values) {
$q->wherein('id',$values);
}))->get();
有最佳实践的人吗?
【问题讨论】:
标签: php laravel eloquent relationship pivot-table