2017-02-12 59 views
0

我试图用这样的同步功能很多同步:Laravel许多与空

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

$战斗机是:

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

当得到它的空元素,我得到:

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); 

它的工作没有任何问题???

这是为什么???发生

回答

1

致电filter()对您的$fighters,以便null值被删除。

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

事情是我需要一个来保存它:round = 1,competidor = null,是不是posible? –

+0

不,那不是怎么属于多关系工作 - 它必须连接两个车型。参考一轮但不是竞争对手的记录有什么意义? – Dwight

+0

当竞争对手的数量并不完美时,它经常发生。例如,如果我有三个竞争者和总共八个竞争者,最后一组将有一个空的空间。我必须保持这个空间,我不能忘记它。我不能把竞争对手那是一个空,并用他的身份证,因为我也有一个得天独厚的条件:$表 - >独特的([“competitor_id”,“round_id”]); –

0

如果你这样做:$round->competitors()->attach(null);是它,如果你只是不作任何连接一样吗?这可能是为什么它工作!