我們有自我引用的產品對產品的關係,並且我正在努力根據數據透視表中的另一個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