我们有自我引用的产品对产品的关系,并且我正在努力根据数据透视表中的另一个FK返回数据。Laravel:添加一个连接来自引用多对多的关系?
我玩,看起来像这样的样本数据透视表:
tmp_prod2prod:
- ID
- prod_id_to
- prod_id_from
- affiliation_type_id
而且那affiliation_type_id
FK是指该表:
affiliation_types:
- ID
- 型
- 描述
(顺便说一句,如果你想看到一个完整的模式,find it here on pastebin)
目标:
我的目标是显示affiliation_types.type
。
我的模型看起来像:
class TmpProd extends Eloquent {
protected $table = 'tmp_prods';
public $timestamps = false;
public function affiliatedToProducts()
{
return $this->belongsToMany('TmpProd', 'tmp_prod2prod', 'p_id_to', 'p_id_from')
->withPivot('affiliation_type_id')
->join('affiliation_types', 'tmp_prod2prod.affiliation_type_id', '=', 'affiliation_types.id');
}
public function affiliatedFromProducts()
{
return $this->belongsToMany('TmpProd', 'tmp_prod2prod', 'p_id_from', 'p_id_to');
}
}
和我的控制器我跑:
$model = TmpProd::find(1);
foreach ($model->affiliatedToProducts as $cross) {
echo"<pre>",var_dump($cross->pivot),"</pre>\n";
}
我已经试过足够的变化,我觉得我的头在旋转:)
如何根据数据透视表中的affiliation_type_id
FK调整affiliation_types.type
?
添加'用于(为4.2.8)addSelect',好吧,**添加**选择语句。现在,在4.2.11中,它取代了原来的select语句,至少在'belongsToMany'关系的情况下,功能上与使用'select'相同。我试图弄清楚为什么会改变,但现在唯一的解决方案是指定'tmp_prods。*',所以' - > select('affiliation_types.type','tmp_prods。*');'。或降级到v4.2.8。 :) – damiani 2014-10-28 18:19:42
完成。现在来研究为什么这个不寻常的变化是... – damiani 2014-10-28 18:24:48
感谢所有的辛勤工作 – mOrloff 2014-10-28 19:39:37