W3Cschool
恭喜您成為首批注冊用戶
獲得88經驗值獎勵
多對多關聯(lián)通過調用 belongsToMany
這個內部方法返回的結果來定義,例如,我們在 User
模型中定義 roles
方法:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
/**
* 用戶擁有的角色
*/
public function roles()
{
return $this->belongsToMany('App\Models\Role');
}
}
一旦關聯(lián)關系被定義后,你可以通過 roles
「動態(tài)屬性」獲取用戶角色:
$user = App\Models\User::find(1);
foreach ($user->roles as $role) {
//
}
當然,像其它所有關聯(lián)模型一樣,你可以使用 roles
方法,利用鏈式調用對查詢語句添加約束條件:
$roles = App\Models\User::find(1)->roles()->orderBy('name')->get();
正如前面所提到的,為了確定關聯(lián)連接表的表名,Eloquent 會按照字母順序連接兩個關聯(lián)模型的名字。當然,你也可以不使用這種約定,傳遞第二個參數到 belongsToMany 方法即可:
return $this->belongsToMany('App\Models\Role', 'role_user');
除了自定義連接表的表名,你還可以通過傳遞額外的參數到 belongsToMany
方法來定義該表中字段的鍵名。第三個參數是定義此關聯(lián)的模型在連接表里的外鍵名,第四個參數是另一個模型在連接表里的外鍵名:
return $this->belongsToMany('App\Models\Role', 'role_user', 'user_id', 'role_id');
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: