W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
如果你想定義一個自定義模型來表示關(guān)聯(lián)關(guān)系中的中間表,可以在定義關(guān)聯(lián)時調(diào)用 using
方法。自定義多對多中間表模型都必須擴展自 Illuminate\Database\Eloquent\Relations\Pivot
類,自定義多對多(多態(tài))中間表模型必須繼承 Illuminate\Database\Eloquent\Relations\MorphPivot
類。例如,我們在寫 Role
模型的關(guān)聯(lián)時,使用自定義中間表模型 RoleUser
:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Role extends Model
{
/**
* 擁有此角色的所有用戶
*/
public function users()
{
return $this->belongsToMany('App\Models\User')->using('App\Models\RoleUser');
}
}
當(dāng)定義 RoleUser
模型時,我們要擴展 Pivot
類:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Relations\Pivot;
class RoleUser extends Pivot
{
//
}
你可以組合使用 using
和 withPivot
從中間表來檢索列。例如,通過將列名傳遞給 withPivot
方法,就可以從 UserRole
中間表中檢索出 created_by
和 updated_by
兩列數(shù)據(jù):
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Role extends Model
{
/**
* 擁有此角色的用戶
*/
public function users()
{
return $this->belongsToMany('App\Models\User')
->using('App\Models\RoleUser')
->withPivot([
'created_by',
'updated_by',
]);
}
}
注意:
Pivot
模型可能不使用SoftDeletes
特性。 如果您需要軟刪除數(shù)據(jù)關(guān)聯(lián)記錄,請考慮將您的數(shù)據(jù)關(guān)聯(lián)模型轉(zhuǎn)換為實際的Eloquent
模型。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: