2
說我有3個表:Laravel透視表無效外鍵
表1
+----+-------+
| id | name |
+----+-------+
| 1 | some |
| 2 | some2 |
+----+-------+
表2:
+----+-------+
| id | name |
+----+-------+
| 1 | some |
| 2 | some2 |
+----+-------+
table1_table2:
+-----------+-----------+---------------------+
| table1_id | table2_id | settings |
+-----------+-----------+---------------------+
| 1 | 1 | {'something':false} |
| 2 | null | {'something':false} | <--- :(
+-----------+-----------+---------------------+
然後我會在以下型號
class Table1 extends Model {
[...]
public function table2()
{
return $this->belongsToMany('Table2', 'table1_table2', 'table1_id', 'table2_id')
->withPivot('settings');
}
}
class Table2 extends Model {
[...]
public function table1()
{
return $this->belongsToMany('Table1', 'table1_table2', 'table2_id', 'table1_id')
->withPivot('settings');
}
}
一切都是好的,當我在數據透視表這兩個ID插入。
問題時(上數據檢索),因爲我有其中I插入空值table2_id案件。
Table1::find(1)->table2(); //Gives back the first entry OK (as array)
Table1::find(2)->table2(); //Gives back empty array
我的問題是:有沒有一種方法,以紀念table2_id可選(這樣Laravel使左連接,而不是正常的加入)?
嗯...是的,不要把它作爲一個支點? :)您可以使用兩個belongsTo關係,並使第二個可選。我想這會使邏輯更清潔。 –
我最終提出瞭解決方案,因爲這是唯一不幸的方法。當你不得不從一個框架轉換到另一個時很難:D –
很高興它的工作。 :) –