<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>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 第8章 TP5.0 模型 ================================================= ## 1、模型(model) 數據模型 ## 2、新建數據模型 1) 手動新建 a、打開前臺模塊(C:\AppServ\www\tp5\application\index) 新建model目錄 b、在model目錄下 新建 User.php // 聲明命名空間 namespace app\index\model; // 導入系統的數據模型 use think\Model; // 聲明user模型 class User extends Model{ } 2) 命令新建 1) 切換到項目目錄 php think make:model app\index\model\Users 3) 注意 1、數據模型的名字 建議大家跟數據庫名一致 2、如果數據庫名字和模型名不一致 可以設置表名 protected $table=""; 3、如果表名(yzm_user),數據模型名 (YzmUser) ## 3、模型的實例化 1、調用靜態方法 $res=User::get(1); dump($res->toArray()); 2、實例化數據模型 $user=new User(); $res=$user::get(2); dump($res->toArray()); 3、使用loader $user=Loader::model("user"); $res=$user::get(3); dump($res->toArray()); 4、使用助手函數 $user=model("user"); $res=$user::get(4); dump($res->toArray()); ## 4、查詢操作 ### 1、單條數據 // get方法 // 使用數字 $res=User::get(1); // 默認主鍵 // 使用數組 $res=User::get(["name"=>'yzmedu3']); // 默認查找用戶名 // 使用閉包函數 $res=User::get(function($query){ $query->where("id",15); }); // find方法 $res=User::where("id",13)->find(); ### 2、查詢多條數據 // all // 所有數據 $res=User::all(); // 字符串 $res=User::all("1,2,3"); // 數組 $res=User::all([5,6,7]); // 數組 $res=User::all(['pass'=>'123']); // 閉包 $res=User::all(function($query){ $query->where("pass","123") ->whereOr("pass","456") ->order("id","desc"); }); // select 和 all 基本類似 $res=User::select(); $res=User::limit(2)->select(); 注意,Db查詢中,可以使用find和select,而Model查詢中,可以使用get和all,也可以使用find和select ### 3、獲取某個字段和某列值 // 獲取某個值 $res=User::where("id",5)->value("name"); // 獲取某列值 $res=User::column("name","id"); ### 4、動態查詢 // 查詢出匹配到的第一條數據 // getBy字段名 $res=User::getByAge('44'); dump($res->toArray()); ### 5、多表聯查 #### 一對多 模型: ~~~ <?php namespace app\api\model; use think\Model; class Banner extends Model { //主表與從表是一對多的關系 public function items() { return $this -> hasMany('BannerItem','banner_id','id'); } } ~~~ hasMany('關聯表','關聯表的外鍵','主表的外鍵') 控制器: ~~~ <?php namespace app\api\controller\v1; use app\api\model\Banner as BannerModel; class Banner { public function getBanner() { //傳入Banner的id=1 $banner = BannerModel::with('items') -> find(1); return json($banner); } } ~~~ 如果上述代碼Banner表還關聯了另外一個表,那么在Model中在多增加一個關聯另外一張表的方法,然后在控制器中的with方法填入數組,例如 $banner = BannerModel::with(['items','items1']) -> find(1); #### 一對一 模型: ~~~ class BannerItem extends Model { public function img() { return $this -> belongsTo('Image','img_id','id'); } } ~~~ belongsTo('關聯表','主表關聯從表的id','從表id'); 注意:當前主表包含關聯表的外鍵id,用belongsTo。當前主表不包含關聯表的外鍵,而關聯表有主表外鍵,用HasOne。 ## 5、增加操作 ### 1、設置屬性 $user=new User(); $user->name="yzmedu21"; $user->pass="abc"; $user->age=18; // 返回影響行數 $user->save(); ### 2、通過data方法 $user=new User(); $user->data([ "name"=>"yzmedu22", "age"=>"22", "pass"=>"qwe", ]); // 返回影響行數 $user->save(); ### 3、實例化時 $user=new User([ "name"=>"yzmedu23", "pass"=>'zxc', "age"=>20 ]); // 返回影響行數 $user->save(); // allowField 屏蔽掉數據庫中不存在的字段 $user->allowField(true)->save(); // 指定插入數據庫的字段 $user->allowField(['name','age'])->save(); ### 4、獲取自增的ID // 獲取插入數據ID echo $user->id; ### 5、增加多條數據 $user=new User(); $list=[ ['name'=>"yzmedu33","age"=>33], ['name'=>"yzmedu34","age"=>34] ]; $user->saveAll($list); ### 6、create方法 $user=User::create([ "name"=>"yzmedu35", "age"=>35 ]); ## 6、刪除操作 // $user=User::get(1); // 返回影響行數 // dump($user->delete()); // 刪除主鍵2 $user=User::destroy(2); // 刪除主鍵3,4,5 $user=User::destroy("3,4,5"); $user=User::destroy([6,7,8]); // 刪除name $user=User::destroy(['name'=>"yzmedu23"]); // 刪除多個條件 $user=User::destroy(['name'=>'yzmedu33','age'=>33]); // 使用閉包 $user=User::destroy(function($query){ $query->where("id","<","15"); }); // 刪除數據 $user=User::where("id",">","19")->delete(); dump($user); ## 7、修改操作 // 設置字段更新數據 $user=User::get(15); $user->age=19; $res=$user->save(); // 直接數組修改 $user=new User; $res=$user->save( [ "pass"=>"qweasd", "age"=>16, ],["id"=>16]); // 修改數據 $_POST['name']="yzmedu55"; $_POST['pass']="pass55"; $_POST['age']="55"; $_POST['sex']="nan"; $_POST['id']=17; $user=new User; $res=$user->allowField(['name','pass','age'])->save($_POST,['id'=>17]); // 批量更新 $data=[ ['id'=>15,'name'=>"abc",'pass'=>456], ['id'=>17,'name'=>"abc",'pass'=>456], ]; $user=new User; $res=$user->saveAll($data); echo User::getLastSql(); // 更新操作 $user=new User; $res=$user->where("id",'>','17')->update(['age'=>18]); $res=User::where("id","<","18")->update(['pass'=>'zxc']); // 閉包更新數據 $user=new User; $res=$user->save(['name'=>'yunzhimeng'],function($query){ $query->where("id","15"); }); ## 8、聚合 // 統計數據條數 $tot=User::count(); dump($tot); // 條件判斷 $tot=User::where("age",">",18)->count(); dump($tot); // 統計最大值 $max=User::max('age'); dump($max); // 統計最小值 $min=User::min("age"); dump($min); // 平均值 $avg=User::avg('age'); dump($avg); // 求和 $sum=User::sum('age'); dump($sum); ## 9、獲取器 1、數據模型 // sex 的獲取器 public function getSexAttr($val){ switch ($val) { case '0': return "未知"; break; case "1": return "男"; break; case "2": return "女"; break; } } 2、控制器 // 獲取ID為15 的數據 $user=User::get(17); // 經過獲取器的操作 dump($user->toArray()); dump($user->sex); // 不經過獲取器處理 dump($user->getData()); 3、注意 1、如果字段 user_status 修改器名字getUserStatusAttr 2、如果字段 status 修改器名字getStatusAttr ## 10、修改器 1、數據模型 // 用戶密碼的修改器 public function setPassAttr($val){ return md5($val); } 2、控制器 // 修改 ID 為15 的密碼 $user=new User(); // 密碼會實現自動加密 $res=$user->save(['pass'=>'456'],['id'=>15]); dump($res); 3、注意 1、修改器的觸發條件是 save方法 ## 11、自動完成 1、修改器和自動完成區別 修改器:數據賦值的時候自動進行轉換處理 自動完成:沒有手動賦值的情況下進行手動處理 2、自動完成 // 增加和修改操作都會執行 protected $auto=[]; // 創建數據執行 protected $insert=['create_time']; // 修改數據執行 protected $update=['update_time']; ## 12、時間戳 1、系統支持自動寫入創建和更新的時間戳字段 1) 在配置文件中設置 // 自動寫入時間戳字段 'auto_timestamp' => true, 2) 在數據模型中設置 // 設置自動寫入時間戳 protected $autoWriteTimestamp=true; 2、可以設置字段默認值 // 增加時間的字段 protected $createTime='create_times'; // 更新時間的字段 protected $updateTime='update_times'; 3、取消更新時間戳設置 protected $updateTime=false; ## 13、軟刪除 1、作用: 實現假刪除,可以進行恢復 2、實現 <?php // 聲明命名空間 namespace app\index\model; // 導入系統的數據模型 use think\Model; // 配合軟刪除 use traits\model\SoftDelete; // 聲明user模型 class User extends Model{ // 使用軟刪除 use SoftDelete; // 設置刪除的時間戳 protected $deleteTime="delete_times"; } 3、控制器 1、刪除數據 $res=User::destroy(15); 2、獲取數據 $res=User::get(15); // 軟刪除 數據庫數據存在,但是get獲取不到 3、直接刪除數據 $res=User::destroy(14,true); $user=new User(); $res=$user->where("id",'5')->delete(); 4、讀取所有數據包含軟刪除數據 $res=User::withTrashed()->find(15); $res=User::withTrashed()->select(); 5、僅僅讀取軟刪除數據 $res=User::onlyTrashed()->select(); $res=User::onlyTrashed()->find(1);
                  <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>

                              哎呀哎呀视频在线观看