首頁 >後端開發 >php教程 >如何在 Laravel 中將模型關係與附加透視欄位同步?

如何在 Laravel 中將模型關係與附加透視欄位同步?

DDD
DDD原創
2024-10-19 17:58:30303瀏覽

How to Sync ModelRelationships with Additional Pivot Fields in Laravel?

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn