ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
#模型动作 ##介绍 HDPHP 实现了ActiveRecords模式的ORM模型,表映射到类,记录映射到对象。最大的特点就是使用方便和便于理解(因为采用了对象化),提供了开发的最佳体验,从而达到敏捷开发的目的。 如果数据库表里有 updated_at 和 created_at 两个字段,可以通过模型自动操作这两个字段,只要将 $timestamps 属性设为 true 即可。 ##查询 AR模式的数据查询比较简单,因为更多情况下面查询条件都是以主键或者某个关键的字段。这种类型的查询,HDPHP 有着很好的支持。 先举个最简单的例子,假如我们要查询主键为8的某个用户记录,如果按照之前的方式,我们可能会使用下面的方法: ``` // 查找id为8的用户数据,返回值为数组 User::where('uid',8)->find(); ``` 用AR模式的话可以直接写成(返回值为模型对象): ``` User::find(5); ``` ##新增 添加成功时,如果数据表有请主键则返回主键,否则返回true ``` // 然后直接给数据对象赋值 $User->name = 'hdphp'; $User->email = 'houdunwang@126.com'; // 把数据对象添加到数据库 User::add(); ``` **如果使用了create方法创建数据对象的话,仍然可以在创建完成后进行赋值** ``` $db=User::find(1); $db->create(); // 创建User数据对象,默认使用 $_POST // 增加或者更改其中的属性 $User->nickname = 'php培训'; $user->save(); ``` ##更新 **使用$_POST数据添加** ``` $User = new User; //create 方法会执行自动验证,如果没有传递数据时使用$_POST数据 if($User->create()) { $user->save(); } ``` **更新找到的数据** 要更新模型,可以取出它,更改属性值,然后使用 save 方法: ``` $db = User::find(1); // 查找主键为1的数据 $db->username = 'hdphp'; // 修改数据对象 $db->save(); // 保存当前数据对象 ``` 上面这种方式仅仅是示例,不代表保存操作之前一定要先查询。与下面的方式是等效的: ``` $User = new User; $User->id = 1; $User->username = 'hdphp'; // 修改数据对象 $User->save(); // 保存当前数据对象 ``` **记录不存在才新增** ``` $user =$User->firstOrCreate(['username' => '李四'],['username'=>'李四','age'=>22]); //如果不存在叫 “李四” 的用户就新增用户 ``` **指定更新数据** 数据中必须存在主键值 ``` $User->save(array('id'=>1,'username'=>'houdunwang.com')); ``` **您可以结合查询语句更新** ``` $user->where('id', '>', 100)->update(['cid' => 2]); ``` **更新模型的时间戳** ``` $user->touch(); //表中需要存在 updated_at 字段 ``` > 使用save更新时,最好结合create方法 **获取模型数据** ``` $user->getData(); ``` ##删除 可以删除当前查询的数据对象 ``` $User->find(2); $User->delete(); // 删除当前的数据对象 或者直接根据主键进行删除 ``` ``` $User->delete(8); // 删除主键为8的数据 $User->delete('5,6'); // 删除主键为5、6的多个数据 ``` ## 模型错误 模型错误主要指模型运行中的错误信息,比如验证错误或者开发者自行在模型中定义的错误。 ``` $user->getError(); ```