Laravel 8 模型結構

2021-07-19 11:34 更新

多對多關聯(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'); 
以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號