thinkphp 5.0模型

thinkphp 5.0数据库操作

1、连接数据库

  • 第一步先配置数据配置文件
    在conf文件夹下(需要配置路径,与public同级文件夹,应用程序配置文件所在)建立一个文件名为database.php的文件。
    然后从thinkphp框架配置中复制一下内容,针对自己情况进行配置修改,比如数据名这些。
    // +----------------------------------------------------------------------
    // | 数据库设置
    // +----------------------------------------------------------------------
return [
   
        // 数据库类型
        'type'            => 'mysql',
        // 数据库连接DSN配置
        'dsn'             => '',
        // 服务器地址
        'hostname'        => '127.0.0.1',
        // 数据库名
        'database'        => '',
        // 数据库用户名
        'username'        => 'root',
        // 数据库密码
        'password'        => '',
        // 数据库连接端口
        'hostport'        => '',
        // 数据库连接参数
        'params'          => [],
        // 数据库编码默认采用utf8
        'charset'         => 'utf8',
        // 数据库表前缀
        'prefix'          => '',
        // 数据库调试模式
        'debug'           => false,
        // 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)
        'deploy'          => 0,
        // 数据库读写是否分离 主从式有效
        'rw_separate'     => false,
        // 读写分离后 主服务器数量
        'master_num'      => 1,
        // 指定从服务器序号
        'slave_no'        => '',
        // 是否严格检查字段是否存在
        'fields_strict'   => true,
        // 数据集返回类型
        'resultset_type'  => 'array',
        // 自动写入时间戳字段
        'auto_timestamp'  => false,
        // 时间字段取出后的默认时间格式
        'datetime_format' => 'Y-m-d H:i:s',
        // 是否需要进行SQL性能分析
        'sql_explain'     => false,
        // Builder类
        'builder'         => '',
        // Query类
        'query'           => '\\think\\db\\Query',
    
];
  • 测试一下
    在控制器文件中编写一下代码:当然并不能代表连接成功

2、数据的查询

方式一:Db::query()


方式二:Db::execute(“sql语句”);


方式三:通过表选择查询
表选择:Db::table(‘表名’)->select(); //返回全部记录
也可以带上条件返回:$rs=Db::table(‘sess’)->where([‘sess_id’=>‘100’])->select();


方式四:
$ rs=Db::table(‘表名’)->find(); ,只返回一条记录,默认返回第一条。
也可以带上条件:$rs=Db::table(‘表名’)->where([‘sess_id’=>‘100’])->find();


方式五:查询某个字段值,只返回一条记录

$rs=Db::table(‘表名’)->value(‘字段名’);
也可以带上条件: $ rs=Db::table(‘表名’)->where([‘sess_id’=>‘100’])->value();


方式六:查询某些列(返回多个结果)的值

$rs=Db::table(‘md_area’)->column(‘areaName’,…);

也可以带上条件:$rs=Db::table(‘md_area’)->where([‘Id’=>‘1’])->column(‘areaName’);


3、添加数据

方式一:insert()

$db=Db::name('md_country');
 $res=$db->insert([
      'countryCode' =>'US',
      'countryName' =>'美国'
]);

通过这种方式,可以获取返回值,值为自增的ID,这个在实际工作中很有用。
$res=$db->insertGetId([
      'countryCode' =>'US',
      'countryCode' =>'美国'
]);

方式二:批量插入数据:insertAll(数组); 返回的是一个插入的数据行数,不是bool值,注意一下。

$db=Db::name('md_country');
$data=[];
for($i=0;$i<10;$i++){
    $data[]=[
        'countryCode' =>"C{$i}",
        'countryName' =>"国家{$i}"
    ];
}

$res=$db->insertAll($data);

4、数据更新

方式一:update() ,更新多个字段

$res=$db->where([
    'id'  =>2
])->update([
    'username' =>'jim',
    'email'    =>'[email protected]'
]);

方式二:setField() 仅仅更新一个字段

$res=$db->where([
    'id'  =>2
])->setField('username','jim');
   

方式三:setInc();增加字段值,每更新一次加X

$res=$db->where([
    'id'  =>2
])->setInc('num',X);
   

方式四:setDec() 减少值,每更新一次减少X

$res=$db->where([
    'id'  =>2
])->setDec('num',X);

5、数据删除

方式一:delete()

根据条件删除相应数据
$res=$db->where([
    'id'  =>2
])->delete();
根据主键值删除相应数据
$res=$db->delete(2);
删除所有数据,谨慎使用
$res=$db->where( '1' ='1')->delete();

条件构造器

where(‘id’,“EQ”,1)

条件包含:
EQ:=
NEQ:<>
LT:<
ELT:<=
GT:>
EGT:>=
BETWEEN BETWEEN * AND *
NOTBETWEEN NOTBETWEEN * AND *
IN IN(* , *)
NOTIN NOT IN( * , *)

多个条件这么弄?

$res=$db
    ->where("id","in","1,2,3")
    ->whereOr("username","eq","123444")
    ->whereOr("num","lt","10")
    ->where("","")
])->buildsql();
   

链式操作

$res=Db::table('area')
    ->where("id",">","10")
    ->field("username,id")
    ->order("id DESC")
    ->limit(3,5)
    ->select();
   

thinkphp 5.0模型

1、模型建立
模型的路径及命名:
模型在模块下建立文件夹model,
模型文件命名以数据表名命名,采用骆驼命名法,首字母大写,比如web_user的模型名称是User.
user_infor: UserInfor, 正所谓一张数据表就对应一个模型。

在控制器中调用模型:

toArray();
       dump($res);
    }
}

2、使用模型查询数据

  • get方法
toArray();
       dump($res);
    }
}
  • where方法

class Index extends Controller
{
    public function index()
    {
       $res= MdArea::where("id",12)
             ->filed("user,email")
             ->find()
       $res=$res->toArray();
       dump($res);
    }
}
  • all方法
方式一:主键查询
$res=MdArea::all("1,2,3");
foreache($res as $val){
   dump($val->toArray());
}
方式二:闭包函数
$res=MdArea::all(function($query){

     $query->where("id","<",5)
           ->field("id,email"); 
});
  • select方法


$res=MdArea::where("id",">","15")
    ->field("username,email")
    ->limit(3)
    ->order("id DESC")
    ->select();

foreache($res as $val){
   dump($val->toArray());
}
  • value方法
$res=MdArea::where("id",10)value("email");
dump($res);
  • column方法
$res=MdArea::column("email","username");
dump($res);

3、使用模型添加数据

  • create方法
    传递的第二个参数如果为true,那么可以忽略没有的字段,否则报错。
    传递的第二个参数如果为一个数组,那么可以过滤,只插入第二个参数中的字段值。
$res=MdArea::create([
    'username'=>'jim',
    'password'=>md5('xxxx'),
    'email'   =>'[email protected]'
],true);    
dump($res->id);
dump(res);
$res=MdArea::create([
    'username'=>'jim',
    'password'=>md5('xxxx'),
    'email'   =>'[email protected]'
],['username','email']);    
dump($res->id);
dump(res);
  • save()方法
复杂的形式:
$userModel=new User;
$userModel->username='jim';
$userModel->email='[email protected]';
$userModel->save();
dump($userModel->id);
简单的写法:
$userModel=new User;
$res=$userMode->save([
    'username'=>'jim',
    'password'=>md5('xxx')
]);

dump($res);

如果字段不存在,也不会报错,使用allowField(true),传递参数true.,如果传递参数是一个数组['username','address'] ,表示只增加数组中的字段内容
$userModel=new User;
$res=$userMode->allowField(true)
->save([
    'username'=>'jim',
    'password'=>md5('xxx')
]);

dump($res);

多条记录插入
$userModel=new User;
$res=$userMode->saveAll([
    'username'=>'jim',
    'username'=>'tom'
]);

dump($res);

4、使用模型更新数据

  • update方法
方式一:只有一个参数
$res=User::update([
   'id' =>1,
   'uername'=>'jim'
]);
dump($res);
方式二: 第二个参数
$res=User::update([
   'uername'=>'jim'
],['id'=>2]);
dump($res);

方式三:第二个参数为闭包函数
$res=User::update([
   'uername'=>'jim'
],function($query){
   $query->where("id","LT",5)
});
dump($res);
  • update方法&where
$res=User::where("id","<",6)
    ->update([
        'username'=>'jim'
    ]);

dump($res);

  • save方法
$userModel=User::get(1);
$userModel->username='jim';
$userModel->email='[email protected]';
$res=$userModel->save();
dump($res);

你可能感兴趣的:(PHP)