日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > php >内容正文

php

二十七、PHP框架Laravel学习笔记——模型的多对多关联

發(fā)布時(shí)間:2024/7/5 php 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 二十七、PHP框架Laravel学习笔记——模型的多对多关联 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

二.多對(duì)多關(guān)聯(lián)

  • 多對(duì)多關(guān)聯(lián),比前面兩種要復(fù)雜一些,需要一張中間表,共三張;

  • (1) .users:用戶表;
    (2) .roles:權(quán)限表;
    (3) .role_user:中間表:默認(rèn)表名,user_id,role_id,默認(rèn)外鍵可不指明;

  • 創(chuàng)建權(quán)限表:Role.php,留空;在 User.php 設(shè)置多對(duì)多關(guān)聯(lián);
    //多對(duì)多關(guān)聯(lián)
  • public function role() { return $this->belongsToMany(Role::class, 'role_user', 'user_id', 'role_id'); }

    PS:參數(shù) 2 傳中間表名,參數(shù) 3,4 如果是默認(rèn)值,則可不傳;

  • 多對(duì)多關(guān)聯(lián)輸出,查看用戶都擁有哪些權(quán)限;
  • $roles = User::find(19)->role; return $roles;

  • 獲取權(quán)限列表中某一個(gè)數(shù)據(jù),和一對(duì)多操作方法一樣,但注意返回的表名稱;
    //注意,多對(duì)多這里 role()返回的是 role_user 表
    //可以通過 dd($roles)查看,所以,where 需要用 role_id 來指明
  • $roles = User::find(19)->role()->where('role_id', 1)->get(); return $roles;

    //當(dāng)然,你也可以使用集合的方式去實(shí)現(xiàn)篩選

    $roles = User::find(19)->role; return $roles->where('id', 1);

  • 多對(duì)多的反向關(guān)聯(lián)和其它兩種方式也差不多;
    //反向多對(duì)多關(guān)聯(lián),后面 id 是反的
  • public function user() { return $this->belongsToMany(User::class, 'role_user', 'role_id', 'user_id'); } $users = Role::find(1)->user; return $users;

  • 多對(duì)多會(huì)生成一個(gè)中間字段:pivot,里面包含多對(duì)多的雙 id;
  • 如果想要 pivot 字段包含更多的中間表字段,可以自行添加,還可以修改字段名;
  • return $this->belongsToMany(Role::class, 'role_user', 'user_id', 'role_id') ->withPivot('details', 'id') ->as('pivot_name');

  • 定義多對(duì)多綁定時(shí),可以在綁定方法內(nèi)篩選數(shù)據(jù);
  • $this->belongsToMany(Role::class) ... ->wherePivot('id', 1);

    PS:還有 wherePivotIn,以及派生的四種方法;
    PS:除了一對(duì)一,一對(duì)多,多對(duì)多,還有派生的遠(yuǎn)程一對(duì)一,遠(yuǎn)程一對(duì)多,以及多態(tài)一對(duì)一, 多態(tài)一對(duì)多,多態(tài)多對(duì)多。這些更多的擴(kuò)展,暫時(shí)不納入基礎(chǔ)的核心課程,防止過于繁雜冗余 導(dǎo)致勸退。

    總結(jié)

    以上是生活随笔為你收集整理的二十七、PHP框架Laravel学习笔记——模型的多对多关联的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。