午夜91福利视频,午夜成人在线观看,午夜在线视频免费观看,午夜福利短视频,精品午夜成人免费视频APP

多對多關聯

 

版本 功能調整
5.0.8 中間表名無需前綴,并支持定義中間表模型
5.0.6 attach方法返回值改為Pivot對象

關聯定義

例如,我們的用戶和角色就是一種多對(dui)多的關系,我們在User模型定義如下(xia):

<?php
namespace appindexmodel;

use thinkModel;

class User extends Model 
{
    public function roles()
    {
        return $this->belongsToMany('Role');
    }
}

belongsToMany方法的(de)參數(shu)如下(xia):

belongsToMany('關聯模型名','中間表名','外鍵名','當前模型關聯鍵名',['模型別名定義']);

5.0.8+版本開始,中(zhong)間表(biao)(biao)(biao)名(ming)無需(xu)添加表(biao)(biao)(biao)前綴,并支(zhi)持定義(yi)中(zhong)間表(biao)(biao)(biao)模型,例(li)如:

    public function roles()
    {
        return $this->belongsToMany('Role','ppindexmodelAccess');
    }

關聯查詢

我們可以通過下(xia)面的(de)方(fang)式獲取關聯數據

$user = User::get(1);
// 獲取用戶的所有角色
dump($user->roles);

如(ru)果要獲取中間表數據,可以使(shi)用

$user = User::get(1);
$roles = $user->roles;
foreach($roles as $role){
    // 獲取中間表數據
    dump($role->pivot);
}

關聯新增

$user = User::get(1);
// 增加關聯數據 會自(zi)動寫(xie)入(ru)中間表數據
$user->roles()->save(['name'=>'管(guan)理員']);
// 批量增加(jia)關聯數據
$user->roles()->saveAll([
    ['name'=>'管理員'],
    ['name'=>'操作(zuo)員'],
]);

只新增中間表數據,可以使用(yong)

$user = User::get(1);
// 僅增加關聯的中間表數據
$user->roles()->save(1);
// 或者
$role = Role::get(1);
$user->roles()->save($role);
// 批量增加關聯數據
$user->roles()->saveAll([1,2,3]);

單(dan)獨(du)更新(xin)中間(jian)表數據,可(ke)以使(shi)用:

$user = User::get(1);
// 增加關聯的(de)中間(jian)表數據
$user->roles()->attach(1);
// 傳入中間表的(de)額外屬性
$user->roles()->attach(1,['remark'=>'test']);
// 刪除中間表數據
$user->roles()->detach([1,2,3]);

V5.0.6+版本開始,attach方法的返回值是一個Pivot對象實例,如果是附加多個關聯數據,則返回Pivot對象實例的數組。

定義相對的關聯

我們可以在Role模型中(zhong)定義一(yi)個相對的關(guan)聯(lian)關(guan)系,例(li)如(ru):

<?php
namespace appindexmodel;

use thinkModel;

class Role extends Model 
{
    public function users()
    {
        return $this->belongsToMany('User');
    }
}
文檔最后更新時間:2018-06-09 15:41:20

文檔
目錄

深色
模式

切換
寬度