ThinkPHP5-模型和关联操作

模型和关联操作:表对应一个模型、字段对应一个属性操作类的对象时就等于操作某一张表的记录命名规则:指定类名对应指定数据表名下划线的标明对应驼峰式命名的类如果类名和标明不相关,但是想操作那张表:那么可以用protected $name = 'data'; //来确定表名protected $table = 'think_data'; //或者直接设置带前缀的表名类名首字母必须大写命名空间:namespace app\index\model;use think\Model;class Users extends Model{protected $name = 'xxx';}TIPS:Model的文件名必须为数据表的表名;(除了使用protected改变表名的方法打破规则)//但是项目中会引起歧义,不推荐使用且要在controller里用到model,必须use\index\model\表名;来使用;TIPS:如果不是主键的id,使用get(id)信息,只能获取到id=1的数据;$user->save(); //新增;在save前对数据库字段进行赋值(相当于insert),完成对类的操作达到对表的操作例:$user = new User; //要进行此操作必须要在控制器里先use;$user->name = 'fate'; //对字段进行赋值;$user->save(); //使用save()方法,做插入操作(insert);//调用静态的create方法例(另一种方法):$user['n_info'] = 'wait';$user['password'] = '123'; //使用数组来新增表数据if($result = User::create($user)){ //使用create方法对数组insertecho $result->n_info.$result->password;}//关于批量新增(Alllist的方式):原理是利用循环insert插入 $user = new Demo(); $list = [ ['n_password' => '111','n_info' => 'CMS'], ['n_password' => '222','n_info' => 'SMC'], ]; if($user->saveAll($list)){ echo '新增成功'; }//查询(指定字段)$user = Users::get(1);echo $user->n_info;//查询(制定字段):将类的属性当做数组来访问 $user = Demo::get(62); echo $user['n_password'];//非常有用的方法来查询//根据某个条件查询数据getByXxxx()方法$user = Demo::getByN_info('CMS'); //通过查询到n_info=CMSecho $user['n_password']; //再拿到上述规则下的n_password数据//查询数据$user1 = Demo::where(['n_info' => 'secoend'])->find();print_r($user1);当数据已经存在(被查出来后),save()就会执行update操作//对于数据库查询出来的数据,更新数据 $user = Demo::get(2); $user->n_password = '123'; $user->n_info = 'none1'; if(false !== $user->save()){ return '更新成功'; }else{ return $user->getError(); }//但是,如果想要对查询出的数据进行插入,而不是更新(save)那么:if(false !== $user->isUpdate(false)->save()){...}else{...}; //新增数据 $user = Demo::get(1); $user->n_info = 'fucxk'; $user->n_password = '0'; $user->id = null; if(false !== $user->isUpdate(false)->save()) return '新增成功'; else return '失败';这是在查询数据的基础上新增数据,如果有允许为NULL的字段,那么字段内容新增为get(i)中i的字段//TIPS:到底是insert还是update取决于isUpdate的属性,当isUpdate为false时,做insert处理,当isUpdate为true时,做update处理;自定义数据更新操作:$userArr['n_info'] = 'qwer'; $userArr['n_password'] = '0123'; Demo::update($userArr,['id' => 2]); //条件为id是2//在use了Demo的model后,直接调用update方法(TIPS:这里如果设置0为首字符,那么会被数据库默认忽略掉)//删除操作 $user = Demo::get(23); $user->delete();//更简单的删除操作Demo::destroy(24); //destroy里为id值且在删除后刷新页面,页面不会报错总结:controller的类名和表名没有任何关系,而model的表名必须和类名一致,且未驼峰法命名controller需要使用model里的表方法来操作数据表时,需要use app\index\model驼峰法表名;model中,可以用protected来设置表名和其他属性;两种方法通过对类的操作达到数据库的操作(新增):1、使用save方法;2、使用create方法;一个模型对应一个数据表;表里为下划线,类里为驼峰式命名;要使用model,需先拿命名空间:namespace app\index\model;再拿到到父类的空间use think\Model;使用save自动插入数据库操作;使用saveAll(数组),实现批量插入;根据某个条件来查询数据库(更简单的方法)$user = Demo::getByN_info('CMS');//查询多个数据$list = Demo::all(); foreach ($list as $value){ echo 'id:'.$value->id.'info'.$value->n_info; }从数据库里查询处的数据,使用save方法为update操作;可利用此特性改变任意值使用if(false !== $user->isUpdate(false)->save())的isupdate判断来修改isupdate的值,达到新增功能;使用删除操作$user = Demo::get(1);$user->delete;更简便的删除操作Demo::destroy(1);
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值