欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

THINKpHp5的基本模型關(guān)聯(lián)

2023-11-01    分類: 網(wǎng)站建設(shè)

1.創(chuàng)建thinkpHp模型

用cmd指令在文件根目錄下創(chuàng)建模型
php think make:model 模塊/模型名稱

模型會創(chuàng)建在application目錄下的 “模塊\模型[模型名稱]” 中。

2.模型命名

模型類的命名規(guī)則是除去表前綴的數(shù)據(jù)表名稱,采用駝峰法命名,并且首字母大寫,比如表的表前綴是 db_ 在模型名稱里就需要省略掉。所以 db_admin 表的模型類名就是 Admin , db_admin_message 的模型類名就是AdminMessage

3.一對一關(guān)聯(lián)

hasOne (‘關(guān)聯(lián)模型名’,‘關(guān)聯(lián)外鍵’,‘主鍵’,‘別名定義’, ‘join類型’)

  • 關(guān)聯(lián)操作都是基于(第一)模型的話,(第二)模型中并不需要定義關(guān)聯(lián)方法,使用belongsTo 方法就可以。
    belongsTo 方法和 hasOne 一樣,也有5個參數(shù):

belongsTo(‘關(guān)聯(lián)模型名’,‘關(guān)聯(lián)外鍵’,‘關(guān)聯(lián)模型主鍵’,‘別名定義’,‘join類型’)

a.模型定義

    //  定義關(guān)聯(lián)方法,在User模型哄下定義    public function profile(){        //HASONE關(guān)聯(lián)        return $this->hasOne('profile','id', 'id');    }

在User模型定義好關(guān)聯(lián)的方法之后在profile模型里可以不用寫任何對應(yīng)的方法,但是必須最少要有一個對應(yīng)db_profile 表的空模型。

b.倘若關(guān)聯(lián)操作都基于profile方法時,在profile模型下定義

    public function user(){                            //檔案bELONGSTO關(guān)聯(lián)操作都基于profile方法時,直接使用            return $this->belongsTo('User');                }

c.控制器調(diào)用

     public function index($name='name'){        //get 1 是獲取id為 1 的數(shù)據(jù)        //find() 是查找        //toArray()  是獲取到的數(shù)據(jù)轉(zhuǎn)為數(shù)組        $admin= Admin::get(1);        //查巡當(dāng)前Admin模型數(shù)據(jù)        var_dump($admin->find()->toArray());        //查巡關(guān)聯(lián)模型AdminMessage模型數(shù)據(jù)        $admin= $admin->AdminMessage->find()->toArray();     }

d.輸出結(jié)果:

4.一對多關(guān)聯(lián)

hasMany(‘關(guān)聯(lián)模型名’,‘關(guān)聯(lián)外鍵’,‘關(guān)聯(lián)模型主鍵’,‘別名定義’)

a.模型調(diào)用

    public function books(){        return $this->hasMany('book','id','id');    }

b.控制器調(diào)用

  • 關(guān)聯(lián)添加:也可以批量增加數(shù)據(jù)

  • 關(guān)聯(lián)查詢:可以直接調(diào)用模型的屬性獲取全部關(guān)聯(lián)數(shù)據(jù)

    public function read(){       $user = UserModel::get(1);       // 獲取狀態(tài)為1的關(guān)聯(lián)數(shù)據(jù)       $books = $user->books()->where('status',1)->select();       dump($books);       // 獲取作者寫的某本書       $book = $user->books()->getbyTitle('ThinkpHp5快速入門');       dump($book);    }

  • 關(guān)聯(lián)更新:

    public function update($id){    $user = UserModel::get($id);    $book = $user->books()->getbyTitle('ThinkpHp5開發(fā)手冊');    $book->title = 'ThinkpHp5快速入門';    $book->save();    }

  • 關(guān)聯(lián)刪除:

    //刪除部分關(guān)聯(lián)數(shù)據(jù):    $book = $user->books()->getbyTitle('ThinkpHp5開發(fā)手冊');    $book->delete();    //刪除所有的關(guān)聯(lián)數(shù)據(jù):    if($user->delete()){    // 刪除所有的關(guān)聯(lián)數(shù)據(jù)    $user->books()->delete();    }

5.多對多關(guān)聯(lián)

一個用戶會有多個角色,同時一個角色也會包含多個用戶,這就是一個典型的多對多關(guān)聯(lián)
多對多關(guān)聯(lián)通常一定會有一個中間表,也稱為樞紐表,所以需要創(chuàng)建一個用戶角色的中間表
belongsToMany 的參數(shù)如下

belongsToMany(‘關(guān)聯(lián)模型名’,‘中間表名稱’,‘關(guān)聯(lián)外鍵’,‘關(guān)聯(lián)模型主鍵’,‘別名定義’)

對于樞紐表并不需要創(chuàng)建模型類,在多對多關(guān)聯(lián)關(guān)系中,并不需要直接操作樞紐表。

a.模型定義

    // 定義多對多關(guān)聯(lián)    public function roles(){    // 用戶 bELONGS_TO_MANY 角色    return $this->belongsToMany('Role', 'think_access');    }

  • 關(guān)聯(lián)新增

    新增用戶角色 并自動寫入樞紐表
    $user->roles()->save(['name' => 'editor', 'title' => '編輯']);

  • 批量新增

    $user->roles()->saveAll([    ['name' => 'leader', 'title' => '領(lǐng)導(dǎo)'],    ['name' => 'admin', 'title' => '管理員'],    ]);

由于該角色已經(jīng)存在了,所以只需要使用attach 方法增加樞紐表的關(guān)聯(lián)數(shù)據(jù):

$user->roles()->attach($role);

  • 關(guān)聯(lián)刪除

    使用detach 方法刪除關(guān)聯(lián)的樞紐表數(shù)據(jù),但不會刪除關(guān)聯(lián)模型數(shù)據(jù)

    $user->roles()->detach($role);

    刪除樞紐表的同時刪除關(guān)聯(lián)模型

    $user->roles()->detach($role,true);

6.模型輸出

  • 輸出數(shù)組: toArray 方法把模型對象輸出為數(shù)組。

    $user->toArray()

  • 隱藏屬性:hidden方法在輸出的時候隱藏某些屬性

    模型名->方法([字段名稱,字段名稱,***]) $user->hidden(['create_time','update_time'])->toArray()

  • 指定屬性:visible方法指定一些屬性輸出

    模型名->方法([字段名稱,字段名稱,***])

    $user->visible(['id','nickname','email'])->toArray()

  • 追加屬性

    如果讀取器定義了一些非數(shù)據(jù)庫字段的讀取,例如:

    class User extends Model{        // status修改器        protected function getUserStatusAttr($value){        $status = [-1 => '刪除', 0 => '禁用', 1 => '正常', 2 => '待審核'];        return $status[$value];    &n            

新聞標(biāo)題:THINKpHp5的基本模型關(guān)聯(lián)
文章網(wǎng)址:http://chinadenli.net/news30/291880.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃、移動網(wǎng)站建設(shè)、服務(wù)器托管、動態(tài)網(wǎng)站、用戶體驗關(guān)鍵詞優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司
亚洲中文字幕在线乱码av| 蜜桃传媒在线正在播放| 中文字幕日韩一区二区不卡| 神马午夜福利一区二区| 国产水滴盗摄一区二区| 中文字幕91在线观看| 日韩av生活片一区二区三区| 空之色水之色在线播放| 色婷婷在线精品国自产拍| 污污黄黄的成年亚洲毛片| 亚洲伦片免费偷拍一区| 欧美激情区一区二区三区| 国产情侣激情在线对白| 日本东京热加勒比一区二区| 欧美色婷婷综合狠狠爱| 丰满人妻一二三区av| 国产又粗又硬又长又爽的剧情| 欧美日韩国产精品自在自线| 亚洲黄香蕉视频免费看| 亚洲国产精品久久琪琪| 欧美色欧美亚洲日在线| 一区二区日韩欧美精品| 97人妻人人揉人人躁人人| 这里只有九九热精品视频| 日韩欧美国产三级在线观看| 欧美精品专区一区二区| 欧美一级片日韩一级片| 久久精品一区二区少妇| 国产高清三级视频在线观看| 欧美视频在线观看一区| 98精品永久免费视频| 亚洲综合伊人五月天中文| 中文字幕精品少妇人妻| 丰满人妻一二三区av| 亚洲中文字幕视频一区二区| 午夜传媒视频免费在线观看| 九九久久精品久久久精品| 久草视频在线视频在线观看| 亚洲欧美日韩网友自拍| 日韩丝袜诱惑一区二区| 免费亚洲黄色在线观看|