Laravel多对多与null同步

时间:2017-02-12 02:59:05

标签: laravel many-to-many

我正在尝试使用这样的同步功能:

$round->competitors()->sync($fighters);

$ fighter是:

Collection {#339 ▼
  #items: array:3 [▼
    0 => 5
    1 => null
    2 => 6
  ]
}

当它到达null元素时,我得到:

QueryException in Connection.php line 647:
SQLSTATE[22007]: Invalid datetime format: 1366 Incorrect integer value: '' for column 'competitor_id' at row 1 (SQL: insert into `round_competitor` (`competitor_id`, `round_id`) values (, 29))

如果我尝试,我会得到相同的结果:

$round->competitors()->sync([null, null]);

但如果我尝试:

$round->competitors()->attach(null);

它没有任何问题???

为什么会这样?

2 个答案:

答案 0 :(得分:1)

filter()上致电$fighters,以便删除null值。

$round->competitors()->sync($fighters->filter());

答案 1 :(得分:0)

如果您这样做:$round->competitors()->attach(null);是否与您不做任何附加相同?这可能就是它工作的原因!!