Laravel pivot table 空外键

Laravel pivot table null foreign key

假设我有 3 个 tables:

table1

+----+-------+
| id | name  |
+----+-------+
|  1 | some  |
|  2 | some2 |
+----+-------+

table2:

+----+-------+
| 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');
    }
}

当我插入 pivot table 两个 id 时一切正常。

出现问题(在数据检索时),因为我在 table2_id.[= 中插入 null 值的情况17=]

Table1::find(1)->table2(); //Gives back the first entry OK (as array)
Table1::find(2)->table2(); //Gives back empty array

我的问题是:有没有办法将table2_id标记为可选(这样Laravel进行左连接而不是正常连接)?

最简单的方法可能是完全跳过枢轴,并使其成为常规 table + 属于两个 table 的模型,但后者是可选的。