2017-02-12 89 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);是它,如果你只是不作任何連接一樣嗎?這可能是爲什麼它工作!