<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # ThinkPHP6 模型 --- ## 一、創建模型 * 請確保你已經在數據庫配置文件中配置了數據庫連接信息 * 模型會自動對應數據表,模型類的命名規則是除去表前綴的數據表名稱,采用駝峰法命名,并且首字母大寫 * 模型自動對應的數據表名稱都是遵循小寫+下劃線規范,如果你的表名有大寫的情況,必須通過設置模型的table屬性。 **模型名**|**對應數據表**|**數據庫前綴** ---|---|--- Admin|admin|tp_admin User|user|tp_user UserOrder|user_order|tp_user_order > 表前綴設置:`config/database.php` 文件里 `prefix` ### 1、單項目模型創建 * 第一步:創建一個跟控制器平級的目錄,目錄名:`model` * 第二步:在 `model` 創建 `Admins.php` 文件 ### 2、多項目模型創建 * 第一步:在 `index` 項目中創建目錄,目錄名:`model` * 第二步:在 `model` 創建 `Admins.php` 文件 --- ## 二、模型操作 > 在模型中除了可以調用數據庫類的方法之外(換句話說,數據庫的所有查詢構造器方法模型中都可以支持),可以定義自己的方法,所以也可以把模型看成是數據庫的增強版。 * 模型文件里的自定義方法,不要和 `thinkphp` 方法一樣名稱 * 模型里的 `Admins::` 也可以用 `static::` 關鍵詞 * 鏈式操作,都可以在模型里使用 ```php controller公用示例: namespace app\index\controller; use app\BaseController; use app\index\model\Admins; class Index extends BaseController{ public function index(){ $db = new Admins(); $index = $db->index(); print_r($index); } } ``` ### 1、模型 查詢數據 * `find` 獲取單條數據,返回的是當前模型的對象實例 ```php model示例: namespace app\index\model; use think\Model; class Admins extends Model{ public function index(){ $find = Admins::find(1); $find = Admins::where('id',2)->find(); return $find; } } ``` * `select` 獲取多條數據,返回的是當前模型的對象實例 ```php model示例: namespace app\index\model; use think\Model; class Admins extends Model{ public function index(){ $select = Admins::select(); $select = Admins::select([1]); $select = Admins::where('id','>',1)->select(); return $select; } } ``` * `value` 獲取單個字段數據 ```php model示例: namespace app\index\model; use think\Model; class Admins extends Model{ public function index(){ $select = Admins::where('id','>',1)->value('username'); return $select; } } ``` * `column` 獲取一列字段數據 ```php model示例: namespace app\index\model; use think\Model; class Admins extends Model{ public function index(){ $select = Admins::column('username'); $select = Admins::column('username','id'); return $select; } } ``` ### 2、模型 增加數據 * `create` 靜態方法添加數據,返回的是當前模型的對象實例 ```php model示例: namespace app\index\model; use think\Model; class Admins extends Model{ public function index(){ $create = Admins::create([ 'username' => 'huazheng', 'password' => md5(123456), 'truename' => '華箏' ]); echo $create->id; // 可以直接獲取自增id return $create; } } ``` > 新增數據的最佳實踐原則:使用create方法新增數據,使用saveAll批量新增數據。 ### 3、模型 修改數據 * `update` 靜態方法修改數據,返回的是當前模型的對象實例 ```php model示例: namespace app\index\model; use think\Model; class Admins extends Model{ public function index(){ $update = Admins::update(['username'=>'歐陽克'],['id'=>1]); return $update; } } ``` ### 4、模型 刪除數據 * `delete` 靜態方法刪除數據,返回的是當前模型的對象實例 ```php model示例: namespace app\index\model; use think\Model; class Admins extends Model{ public function index(){ $delete = Admins::where('id',3)->delete(); return $delete; } } ``` --- ## 三、模型特點 * TP模型如果只能增刪查改,不如在 `Controller` 執行了。TP模型很多特點,下面為大家一一介紹 ### 1、模型設置 * 為了和數據庫更好的適配,模型可以提前設置對應的數據庫屬性 **屬性**|**描述** ---|--- name|模型名(相當于不帶數據表前后綴的表名,默認為當前模型類名) table|數據表名(默認自動獲取) pk|主鍵名(默認為 `id` ) schema|模型對應數據表字段及類型 disuse|數據表廢棄字段(數組) | | suffix|數據表后綴(默認為空) connection|數據庫連接(默認讀取數據庫配置) type|模型需要自動轉換的字段及類型 query|模型使用的查詢類名稱 field|模型允許寫入的字段列表(數組) strict|是否嚴格區分字段大小寫(默認為 `true` ) ```php model示例: namespace app\index\model; use think\Model; class Admins extends Model{ protected $name = 'User'; protected $table = 'user'; protected $pk = 'uid'; public function index(){ $select = User::select(); return $select; } } ``` ```php controller示例: namespace app\index\controller; use app\BaseController; use app\index\model\Admins; class Index extends BaseController{ public function index(){ $db = new Admins(); $index = $db->index(); print_r($index); } } ``` * `Controller` 返回結果是數組, `Model` 返回模型的數據集。 * 兩種返回值,使用方式沒有區別 ```php model示例: namespace app\index\model; use think\Model; class Admins extends Model{ protected $name = 'User'; protected $table = 'user'; protected $pk = 'uid'; public function index(){ $select = User::select(); return $select; } } ``` ```php controller示例: namespace app\index\controller; use app\BaseController; use app\index\model\Admins; use think\facade\Db; class Index extends BaseController{ public function index(){ $db = new Admins(); $index = $db->index(); print_r($index); $select = Db::table('user')->select(); print_r($select); } } ``` * `schema` 設置模型對應數據表字段及類型。默認會自動獲取(包括字段類型),但自動獲取會導致增加一次查詢。 > 類型根據php數據類型定義,如果是json類型直接定義為json即可 ```php model示例: namespace app\index\model; use think\Model; class Admins extends Model{ protected $name = 'User'; protected $table = 'user'; protected $pk = 'uid'; protected $schema = [ 'uid' => 'int', 'u_name' => 'string' ]; public function index(){ $select = User::select(); return $select; } } ``` ```php controller示例: namespace app\index\controller; use app\BaseController; use app\index\model\Admins; class Index extends BaseController{ public function index(){ $db = new Admins(); $index = $db->index(); print_r($index); } } ``` * `disuse` 數據表廢棄字段(數組)。去掉表中不需要的字段 ```php model示例: namespace app\index\model; use think\Model; class Admins extends Model{ protected $name = 'User'; protected $table = 'user'; protected $pk = 'uid'; protected $disuse = [ 'phone', 'sex','age','status' ]; public function index(){ $select = User::select(); return $select; } } ``` ```php controller示例: namespace app\index\controller; use app\BaseController; use app\index\model\Admins; class Index extends BaseController{ public function index(){ $db = new Admins(); $index = $db->index(); print_r($index); } } ``` ### 2、模型 實例化 > 模型可以使用靜態訪問,也可以使用 `new` 實例化 * `save` 添加或修改數據,返回成功或失敗 * 要實例化 `user`,必須有 `user` 這個模型文件 ```php model示例: namespace app\index\model; use think\Model; class Admins extends Model{ public function add(){ $user = new User; $save = $user->save([ 'phone' => '13522222222', 'u_name' => '梅超風', 'sex' => 1, 'age' => 67 ]); return $save; // 返回成功1,失敗0 return $user->uid; // 返回自增ID } public function adds(){ $user = new User; $user->phone = '13533333333'; $user->u_name = '曲靈風'; $user->sex = 1; $user->age = 35; $save = $user->save(); return $save; // 返回成功1,失敗0 return $user->uid; // 返回自增ID } public function edit(){ $user = new User; $list = [ 'phone'=>'13544444444', 'u_name'=>'陳玄風', 'sex'=>2, 'age'=>32 ]; $save = $user->where(['uid'=>37])->save($list); return $save; } } ``` ```php controller示例: namespace app\index\controller; use app\BaseController; use app\index\model\Admins; class Index extends BaseController{ public function index(){ $db = new Admins(); $add = $db->add(); echo $add; $adds = $db->adds(); echo $adds; $edit = $db->edit(); echo $edit; } } ``` * `saveAll` 批量添加或修改數據 > 批量更新僅能根據主鍵值進行更新,如果主鍵不是 ID 就不能用 ```php model示例: namespace app\index\model; use think\Model; class Admins extends Model{ public function add(){ $user = new Admins; $list = [ ['username'=>'ouyangke','password'=>md5(123456),'truename'=>'歐陽克'], ['username'=>'huangrong','password'=>md5(123456),'truename'=>'黃蓉'] ]; $saveAll = $user->saveAll($list); return $saveAll; } public function edit(){ $user = new Admins; $list = [ ['username'=>'陳玄風','id'=>3], ['username'=>'梅超風','id'=>4] ]; $saveAll = $user->saveAll($list); return $saveAll; } } ``` ```php controller示例: namespace app\index\controller; use app\BaseController; use app\index\model\Admins; class Index extends BaseController{ public function index(){ $db = new Admins(); $add = $db->add(); print_r($add); $edit = $db->edit(); print_r($edit); } } ``` ### 3、模型 獲取器 * 獲取器的作用是對模型實例的(原始)數據做出自動處理 * 命名規則: `get` + 字段名 + `Attr` * 字段名是數據表字段的駝峰轉換 ```php model示例: namespace app\index\model; use think\Model; class Admins extends Model{ public function index(){ $user = Admins::find(1); echo $user->status; return $user; } public function getStatusAttr($v){ $status = [0=>'禁用',1=>'開啟']; return $status[$v]; } } ``` ```php controller示例: namespace app\index\controller; use app\BaseController; use app\index\model\Admins; class Index extends BaseController{ public function index(){ $db = new Admins(); $index = $db->index(); print_r($index); print_r($index->status); } } ``` ### 4、模型 修改器 * 修改器的主要作用是對模型設置的數據對象值進行處理 * 命名規則: `set` + 字段名 + `Attr` ```php model示例: namespace app\index\model; use think\Model; class Admins extends Model{ public function index(){ $admins = Admins::create([ 'username' => 'YangKang', 'password' => md5('123456'), 'truename' => '楊康' ]); return $admins; } public function setUsernameAttr($v){ return strtolower($v); // 賬戶只能小寫 } } ``` ```php controller示例: namespace app\index\controller; use app\BaseController; use app\index\model\Admins; class Index extends BaseController{ public function index(){ $db = new Admins(); $index = $db->index(); print_r($index); } } ``` ### 5、模型 搜索器 * 搜索器的作用是用于封裝字段(或者搜索標識)的查詢條件表達式 * 命名規則: `search` + 字段名 + `Attr` ```php model示例: namespace app\index\model; use think\Model; class Admins extends Model{ public function index(){ $admins = Admins::withSearch(['username',[ 'username' => 'admi' ])->select(); return $admins; } public function searchUsernameAttr($query,$v){ $query->where('username','like', $v . '%'); } } ``` ```php controller示例: namespace app\index\controller; use app\BaseController; use app\index\model\Admins; class Index extends BaseController{ public function index(){ $db = new Admins(); $index = $db->index(); print_r($index); } } ``` ### 6、模型 檢查數據 * 如果要判斷數據集是否為空,不能直接使用 `empty` 判斷 * 必須使用數據集對象的 `isEmpty` 方法判斷 ```php model示例: namespace app\index\model; use think\Model; class Admins extends Model{ public function index(){ $admins = Admins::where('username','1')->select(); if(empty($admins)){ echo 111; } if($admins->isEmpty()){ echo 111; } } } ``` ```php controller示例: namespace app\index\controller; use app\BaseController; use app\index\model\Admins; class Index extends BaseController{ public function index(){ $db = new Admins(); $index = $db->index(); } } ``` ### 7、模型 只讀字段 ```php model示例: namespace app\index\model; use think\Model; class Admins extends Model{ protected $readonly = ['username']; public function index(){ $admins = Admins::update(['username' => '穆念慈'], ['id' => 6]); return $admins; } } ``` ```php controller示例: namespace app\index\controller; use app\BaseController; use app\index\model\Admins; class Index extends BaseController{ public function index(){ $db = new Admins(); $index = $db->index(); print_r($index); } } ``` ### 8、模型 軟刪除 * 軟刪除功能,需要引入 `SoftDelete` * 需要創建一個 `delete_time` 字段 * 軟刪除的刪除操作僅對模型的刪除方法有效 ```php model示例: namespace app\index\model; use think\Model; use think\model\concern\SoftDelete; class Admins extends Model{ use SoftDelete; protected $deleteTime = 'delete_time'; //軟刪除標記字段 protected $defaultSoftDelete = 0; // 軟刪除字段的默認值 public function index(){ $admins = Admins::destroy(6); return $admins; } } ``` ```php controller示例: namespace app\index\controller; use app\BaseController; use app\index\model\Admins; class Index extends BaseController{ public function index(){ $db = new Admins(); $index = $db->index(); print_r($index); } } ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看