Laravel:附加透視欄位的Sync()
在Laravel 中,sync() 函數用於將模型關係與ID集。但是,也可以在同步時指定其他樞軸欄位。
預設用法:
如Laravel 文件所述,您可以同步一組簡單的ID像這樣:
<code class="php">$user->roles()->sync([1, 2, 3]);</code>
與資料透視表欄位同步:
如果要將特定資料透視表值與ID 相關聯,可以將它們指定為陣列:
<code class="php">$user->roles()->sync([ 1 => ['expires' => true] ]);</code>
此範例新增一個資料透視行,並將過期欄位設為true。
具有自訂資料的多個資料透視記錄:
至使用自訂資料透視表資料同步多個模型,您可以使用下列語法:
<code class="php">$user->roles()->sync([ 1 => ['expires' => true], 2 => ['expires' => false], ... ]);</code>
此範例同步兩個角色,每個角色都有自己的過期值。
陣列輸入範例:
如果您以陣列形式接收ID 和資料透視數據,則可以使用array_combine() 建立同步資料:
<code class="php">$speakers = (array) Input::get('speakers'); // Get related IDs $pivotData = array_fill(0, count($speakers), ['is_speaker' => true]); $syncData = array_combine($speakers, $pivotData); $user->roles()->sync($syncData);</code>
透過遵循這些準則,您可以與Laravel 中的自訂資料透視欄位有效同步資料。
以上是如何在 Laravel 中將模型關係與附加透視欄位同步?的詳細內容。更多資訊請關注PHP中文網其他相關文章!