亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

快速入門ThinkPHP 5.0 --模型篇

難度中級
時長 3小時 0分
學習人數
綜合評分9.67
70人評價 查看評價
10.0 內容實用
9.5 簡潔易懂
9.5 邏輯清晰
  • 模型聚合操作:

    count/sum/max/min/avg,用法均一樣

    <?php
    namespace?app\index\controller;
    use?think\Controller;
    use?app\index\model\User;
    class?Index?extends?Controller
    {
    ????public?function?index(){
    ????????#count獲取表中數據的條數
    //????????????$res?=?User::count();
    ????????#給count加where條件
    //????????$res?=?User::where('id','>',5)
    //????????????->where('id','<',10)
    //????????????->count();
    
    ????????#max/min獲取指定字段中數據的最大/小值
    //????????$res?=?User::max('id');
    ????????#給max/min添加where條件
    //????????$res?=?User::where('id',"<",9)->count('id');
    
    ????????#sum對指定字段數據求和
    //????????$res?=?User::sum('id');
    ????????#對sum添加where條件
    //????????$res?=?User::where('id','<',8)->sum('id');
    
    ????????#avg對指定字段數據求平均值
    //????????$res?=?User::avg('id');
    ????????#對avg添加where條件
    ????????$res?=?User::where('id','<',8)->avg('id');
    ????????????dump($res);
    ????}
    }


    查看全部
    0 采集 收起 來源:模型聚合操作

    2018-05-08

  • 使用MODEL對象對數據進行刪除:

    <?php
    namespace?app\index\controller;
    use?think\Controller;
    use?app\index\model\User;
    class?Index?extends?Controller
    {
    ????public?function?index(){
    ????????#destroy返回影響行數
    //????????$res?=?User::destroy(function?($query){
    //???????????$query->where('id','<',5)
    //???????????????->whereOr('id','>',10)?;
    //????????});
    //????????dump($res);
    
    ????????#get返回影響行數
    //????????$userModel?=?User::get(7);
    //????????$res?=?$userModel->delete();
    //????????dump($res);
    
    ????????#delete,返回影響行數
    ????????$res?=?User::where('id',10)->delete();
    ????????dump($res);
    ????}
    }


    查看全部
  • 使用模型更新表數據:

    <?php
    namespace?app\index\controller;
    use?think\Controller;
    use?app\index\model\User;
    class?Index?extends?Controller
    {
    ????public?function?index(){
    ????????#當數據中存在自增id時,數據更新方式,返回修改的內容,無法驗證是否更改
    //????????$res?=?User::update([
    //????????????'id'?=>?1,
    //????????????'username'?=>?'wenco_update'
    //????????]);
    //????????dump($res->toArray());
    
    ????????#當數據中不存在自增id時如下,第二個參數即為where,可以為閉包函數,返回修改內容
    //????????????????$res?=?User::update([
    //????????????'username'?=>?'wenco_update'
    //??當第二個參數為數組??????],['id'?=>?'2']);
    //當第二個參數為閉包函數????????],function?($query){
    //????????????????????$query->where('id','>=',?15);
    //????????????????});
    
    ????????#where?返回被影響行數,推薦使用!
    //????????$res?=?User::where('id','between',[1,5])->update([
    //????????????'username'?=>?'wenco_old'
    //????????]);
    //????????dump($res);
    
    ????????#User::get,返回被影響行數
    //????????$userModel?=?User::get(1);
    //????????$userModel->username?=?'123';
    //????????$userModel->email?=?'[email protected]';
    //????????$res?=?$userModel->save();
    //????????dump($res);
    
    ????????#new?User,返回影響行數,第二個參數可以為閉包函數
    //????????$userModel?=?new?User;
    //????????$res?=?$userModel->save([
    //????????????'username'?=>?555
    //????????],['id'?=>??18]);
    //????????dump($res);
    
    ????????#saveAll,返回結果集,不推薦使用
    ????????$userModel?=?new?User;
    ????????$res?=?$userModel->saveAll([
    ????????????['id'?=>?1,'username'?=>?'wencocococ'?],
    ????????????['id'?=>?2,'username'?=>?'wencocococ'?]
    ????????]);
    ????????dump($res);
    ????}
    }


    查看全部
  • 向數據庫中添加數據:

    <?php
    namespace?app\index\controller;
    use?think\controller;
    use?app\index\model\User;
    
    class?Index
    {
    ????public?function?index()
    ????{
    ????????#user::create(),當第二個參數不為數組而是true時會自動過濾掉表中沒有的字段的數據,第二個參數為字段數組,表示只允許在這兩個字段內添加數據
    //????????User::create([
    //????????????'username'??=>??'wenco_1',
    //????????????'password'??=>??md5('wenco_1'),
    //????????????'email'?????=>??'[email protected]',
    //????????????'num'???????=>??100,
    //????????????'demo'??????=>??123
    //????????],['username','email']);
    
    //????????$userModel?=?new?User;
    //????????$userModel->username?=?'wenco_2';
    //????????$userModel->password?=?md5('wenco_2');
    //????????$userModel->save();
    //????????dump($userModel->id);
    
    ????????#直接使用save(),返回被影響行數,allowField()與上面create的第二個參數功能及用法一樣
    //????????$userModel?=?new?User;
    //????????$res?=?$userModel->allowField(true)->save([
    //????????????'username'????=>??"wenco_5",
    //????????????'password'???=>??md5('wenco_5'),
    //????????????'email'??????=>???'[email protected]'
    //????????]);
    
    ????????#使用saveAll同時傳遞多條數據
    ????????$userModel?=?new?User;
    ????????$res?=?$userModel->allowField(true)->saveAll([
    ????????????['email'?=>?'[email protected]'],
    ????????????['email'?=>?'[email protected]'],
    ????????????['email'?=>?'[email protected]']
    ????????]);
    ????????foreach?($res?as?$val){
    ????????????dump($val->?toArray());
    ????????}
    ????????}
    }


    查看全部
  • 模型獲取數據庫數據:

    <?php
    namespace?app\index\controller;
    use?think\controller;
    use?app\index\model\User;
    
    class?Index
    {
    ????public?function?index(){
    ????????#通過get方式獲取數據,括號內可以為主鍵,也可以為閉包函數
    //????????$res?=?User::get(function($query){
    //????????????$query->where("username","eq","wenco_3")
    //????????????->field("email");
    //????????});
    
    //????????$res?=?User::where("id","<=",15)
    //????????????->field("id,username")
    //????????????->limit(19)
    //????????????->order("id"??,"DESC")
    //????????????->select();
    
    ????????#user::all()
    //????????$res?=?User::all(function($query){
    //????????????$query->where("id","<","5")
    //????????????????->field("id","username");
    //????????});
    ????????#column()第二個參數為新生成的數組的下標
    ????????$res?=?User::column("email","username");
    
    //????????foreach($res?as?$val){
    //????????????dump($val->toArray());
    //????????}
    
    ????????//$res?=?$res->toArray();//將結果轉換成數組
    ????????dump($res);
    ????}
    }


    查看全部
  • 首先創建一個Use模型,要繼承think下的Model:

    <?php
    namespace?app\index\model;
    use?think\Model;
    class?User?extends?Model{
    }

    然后在控制器中引用:

    <?php
    namespace?app\index\controller;
    use?think\controller;
    use?app\index\model\User;
    
    class?Index
    {
    ????public?function?index(){
    ????????#new對象
    //????????$user?=?new?User;
    //????????$res?=?$user::get(5);
    
    ????????#$user?=?loader::model():需要use?think下的Loader?//use?think\Loader;
    //????????$res?=?Loader::model("User");
    //????????$res?=?User::get(2);
    
    ????????#助手函數model()
    //????????$user?=?model("User");
    //????????$res?=?$user::get(4);
    
    ????????$res?=?$res->toArray();//將結果轉換成數組
    ????????dump($res);
    ????}
    }


    查看全部
    1 采集 收起 來源:什么是模型

    2018-05-07

  • 鏈式操作:

    <?php
    namespace?app\index\controller;
    use?think\controller;
    use?think\Db;
    class?Index
    {
    ????public?function?index(){
    ????????$db?=?Db::name('user');
    //????????$data?=?[];
    //????????for?($i=1;?$i<21;?$i++){
    //????????????$data[]?=?[
    //????????????????'username'?=>?"wenco_{$i}",
    //????????????????'password'?=>?md5("wenco_{$i}"),
    //????????????????'email'????=>?"wenco_{$i}@qq.com",
    //????????????????'num'??????=>?$i+100
    //????????????];
    //????????}
    //????????$res?=?$db->insertALL($data);
    ????????$res?=Db::table('imooc_user')
    ????????????->field("username","id","group")
    ????????????->order('id',DESC)
    ????????????->limit(3,5)//limit分頁limit((m-1)*n,n)===??m:當前頁數,n:每頁多少條數據
    ????????????->page(2,5)
    ????????????->group("'group'")
    ????????????->select();
    ????????dump($res);
    ????}
    }


    查看全部
    0 采集 收起 來源:鏈式操作

    2018-05-07

  • 條件構造:

    <?php
    namespace?app\index\controller;
    use?think\controller;
    use?think\Db;
    class?Index
    {
    ????public?function?index(){
    ??????????$db?=?Db::name('user');
    
    ??????????#buildSql:返回sql語句
    ??????????#不區分大小寫
    ??????????#EQ???=
    ??????????#NEQ??<>
    ??????????#LT???<
    ??????????#ELT???<=
    ??????????#GT???>
    ??????????#EGT???>=
    ??????????#BETWEEN???BETWEEN?*?AND?*
    ??????????#NOTBETWEEN????NOTBETWEEN?*?AND?*
    ??????????#IN???IN?(*,*)
    ??????????#NOTIN???NOT?IN(*,*)
    
    ??????????#連續使用where方法構成and?where條件,
    //????????????$sql?=?$db->where('id','BETWEEN'?,'1,5')->buildSql();
    ????????????$sql?=?$db
    ????????????????->where('id','exp'?,'not?in(1,2,3)')
    ????????????????->where('username','eq',?'wenco_1')
    ????????????????->buildSql();
    
    ??????????#where與whereOr?構成or的關系
    ????????????$sql?=?$db
    ????????????????->where('id','exp'?,'not?in(1,2,3)')
    ????????????????->whereOr('username','eq',?'wenco_1')
    ????????????????->buildSql();
    
    ??????????dump($sql);
    ????}
    }


    查看全部
    0 采集 收起 來源:條件構造器

    2018-05-07

  • delete:

    <?php
    namespace?app\index\controller;
    use?think\controller;
    use?think\Db;
    class?Index
    {
    ????public?function?index(){
    ??????????$db?=?Db::name('user');
    
    ??????????#delete返回影響行數,當在deleted()中的參數為主鍵時可不加where條件
    ??????????$res?=?$db->delete(2);
    ??????????dump($res);
    ????}
    }


    查看全部
  • 數據更新update/setField/setInc/setDec

    <?php
    namespace?app\index\controller;
    use?think\controller;
    use?think\Db;
    class?Index
    {
    ????public?function?index()
    ????{
    ??????????$db?=?Db::name('user');
    
    //??????#update返回影響行數
    //????????$res?=?$db->where(['id'?=>?1])->update(['username'?=>?'1234567']);
    
    ????????#setField,設置字段的值,返回被影響的數據的行數
    //????????$res?=?$db->where(['id'=>3])->setField([
    //????????????'username'?=>?'88888888',
    //????????????'email'????=>?'66666666'
    //????????]);
    
    ????????#setInc返回影響行數,第一個參數為字段名,第二個數據為在原數據的基礎上的/*自增數*/
    ????????$res?=?$db->where(['id'=>'1'])->setInc('num',5);
    ????????#setDec同setInc,只不過第二個參數為/*自減數*/
    ????????$res?=?$db->where(['id'=>'1'])->setDec('num',5);
    ????????dump($res);
    ????}
    
    }


    查看全部
  • 數據插入:insert /insertGetId/insertAll

    <?php
    namespace?app\index\controller;
    use?think\controller;
    use?think\Db;
    class?Index
    {
    ????public?function?index(){
    ????????$db?=?Db::name('user');
    
    ????????#insert?返回值為插入影響行數
    //????????$res?=?$db->insert([
    //???????????'username'????=>?'wenco',
    //????????????'email'??????=>?'[email protected]',
    //????????????'password'???=>?md5('today')
    //????????]);
    
    ????????#inset插入并且返回自增ID
    //????????$res?=?$db->insertGetId([
    //???????????'username'????=>?'wenco',
    //????????????'email'??????=>?'[email protected]',
    //????????????'password'???=>?md5('today')
    //????????]);
    
    ????????#insetALL,返回插入成功數
    ????????$data?=?[];
    ????????for?($i?=?1;?$i?<?10;$i++){
    ????????????$data[]?=?['username'????=>?"wenco_{$i}",
    ????????????'email'??????=>?"wenco_{$i}@qq.com",
    ????????????'password'???=>?md5("today_{$i}")
    ????????????];
    ????????}
    ????????$res?=?$db->insertAll($data);
    ????????dump($res);
    ????}
    
    }


    查看全部
    0 采集 收起 來源:添加數據

    2018-05-07

  • thinkphp Db類提供的四個查找數據的方法;

    select /column /find/ value

    <?php
    namespace?app\index\controller;
    use?think\controller;
    use?think\Db;
    class?Index
    {
    ????public?function?index(){
    #?使用sql語句的方式查詢數據庫
    //????????$res?=?Db::query("select?*?from?imooc_user?where?id=?",[1]);
    
    #?返回修改影響的結果條數
    /*???????$res?=?Db::execute("insert?into?imooc_user?set?username?=?,password=?,email=?",?[
    ???????????'imooc',
    ???????????md5('imooc'),
    ???????????'[email protected]'
    ????????]);*/
    
    #返回一個二維數組,在不添加where條件下輸出所有數據,如果結果不存在返回一個空數組
    ????????/*$res?=?Db::table('imooc_user')->?where([
    ????????????'id'?=>?"1"
    ????????])->select();*/
    #一維數組,返回該列下的所有值,如果存在第二個參數,那個以第二個參數的值作為數組的key值,如果結果不存在,返回一個空數組
    ????????//$res?=?Db::table('imooc_user')->column('username','email');
    
    #find方法,返回一個一維數組,返回一條數據,如不添加where條件默認返回正序排列下id最小的那一條記錄,如果結果不存在返回null
    /*????????$res?=?Db::table('imooc_user')->where([
    ????????????'id'?=>?"2"
    ????????])->find();*/
    
    #返回一條記錄,某個字段的值,當結果不存在返回null
    //????????$res?=?Db::table('imooc_user')->where(['id'=>'2'])->value('username');
    
    #用Db::name,相當于Db::table傳遞表前綴
    //????????$res?=?Db::name('user')->select();
    
    #助手函數db,與db類不同的是助手函數每次調用都要進行實例化!
    ????????$res?=?db('user')->select();
    ????????dump($res);
    ????}
    
    }


    查看全部
  • 更新數據,并且獲取更新數據是否成功,

    一般不建議使用saveAll和靜態方法,

    一般使用'where() -> updata()'

    或者使用'save() -> where()'?

    或者 'save([],function(){})'


    查看全部
  • 修改數據庫配置方式

    1.可在config下的database.php返回配置信息,直接 DB::connect()

    2.在方法里面引入 use think\db;DB::connect(array);數組即數據庫連接配置

    3.同樣是DB::connect("mysql://root:[email protected]:3306:/databasename#utf8");//use think\Db?

    4.在配置文件中,添加一個數組,DB::connect("數組鍵名");//use think\Db

    查看全部
  • db? 每次都會實例化

    查看全部

舉報

0/150
提交
取消
課程須知
1、有一定的php基礎。 2、對ThinkPHP5 有一定的了解。 3、沒有接觸過tp5 的學生可以先看下我之前錄制的 <快速入門 ThinkPHP5 基礎篇>
老師告訴你能學到什么?
1、ThinkPHP5 的數據庫操作類 2、ThinkPHP5 的數據模型 3、使用數據模型快速對數據庫進行增刪改查的操作 4、ThinkPHP5 的自動完成操作 5、模型的自動時間戳和軟刪除

微信掃碼,參與3人拼團

微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

友情提示:

您好,此課程屬于遷移課程,您已購買該課程,無需重復購買,感謝您對慕課網的支持!