찾다
php教程php手册ThinkPHP 之 curd 操作

ThinkPHP 之 curd 操作

Jun 13, 2016 am 10:56 AM
thinkphp그리고성취하다오른쪽공급작동하다데이터방법유연한~의

ThinkPHP提供了灵活和方便的数据操作方法,不仅实现了对数据库操作的四大基本操作(CURD):创建、读取、更新和删除的实现,还内置了很多实用的数据操作方法,提供了ActiveRecords模式的最佳体验。


新建记录 


PHP 代码


1.  $User->find(2);  


2.  $User->delete(); // 删除查找到的记录  


3.  $User->delete('5,6'); // 删除主键为5、6的数据  


4.  $User->deleteAll(); // 删除查询出来的所有数据 


PHP 代码


1.  // 实例化一个User模型对象  


2.   


3.  $User =  new  UserModel();  


4.  // 然后给数据对象赋值  


5.  $User->name = 'ThinkPHP';  


6.  $User->email = 'ThinkPHP@gmail.com';  


7.  // 然后就可以保存新建的User对象了  


8.  $User->add();  


9.  // 如果需要锁实例化模型对象的时候传入数据,可以使用  


10.            $data['name'] = 'ThinkPHP';  


11.            $data['email'] = 'ThinkPHP@gmail.com';  


12.            $User =  new  UserModel($data);  


13.            $User->add();  


14.            // 或者直接在add方法传入要新建的数据  


15.            $data['name'] = 'ThinkPHP';  


16.            $data['email'] = 'ThinkPHP@gmail.com';  


17.            $User =  new  UserModel();  


18.            $User->add($data);  


19.             


20.             


 


一般情况下,应用中的数据对象不太可能通过手动赋值的方式写入,而是有个数据对象的创建过程。ThinkPHP提供了一个create方法来创建数据对象,然后进行其它的新增或者编辑操作。


PHP 代码


1.  $User = D("User");  


2.  $User->create(); // 创建User数据对象,默认通过表单提交的数据进行创建  


3.  $User->add(); // 新增表单提交的数据 


Create方法支持从其它方式创建数据对象,例如,从其它的数据对象,或者数组等


PHP 代码


1.  $data['name'] = 'ThinkPHP';  


2.  $data['email'] = 'ThinkPHP@gmail.com';  


3.  $User->create($data);  


4.  // 从User数据对象创建新的Member数据对象  


5.  $Member = D("Member");  


6.  $Member->create($User); 


 


支持新增多条记录


PHP 代码


1.  $User =  new  UserModel();  


2.  $data[0]['name'] = 'ThinkPHP';  


3.  $data[0]['email'] = 'ThinkPHP@gmail.com';  


4.  $data[1]['name'] = '流年';  


5.  $data[1]['email'] = 'liu21st@gmail.com';  


6.  $User->addAll($data); 


在MySql数据库下面,会自动使用一条SQL语句实现多数据的插入。


查询记录


读取数据库的记录我觉得是数据库操作中的最有意思的一件事情了,写过文本数据库的人都知道,保存和删除数据不难(无非是规范和效率问题),难在可以通过各种方式来查找需要的数据。ThinkPHP通过各种努力,让数据库的查询操作变得轻而易举,也让ThinkPHP变得富有内涵。


ThinkPHP有一个非常明确的约定,就是单个数据查询和多个数据查询的方法是分开的,或者你会认为有时候自己也不知道要查询的数据是单个还是多个,但是有一点是明确的,你需要的是返回一个数据还是希望返回的是一个数据集。因为对两种类型的返回数据的操作方式是截然不同的,无论何种方式的返回,我们都可以直接在模型对象里面操作,当然也一样可以作为数据传递给你需要的变量。


先举个最简单的例子,假如我们要查询主键为8的某个用户记录,我们可以使用下面的一些方法:


PHP 代码


1.  $User->find(8); 


这个作为查询语言来说是最为直观的,如果查询成功,查询的结果直接保存在当前的数据对象中,在进行下一次查询操作之前,我们都可以提取,例如获取查询的结果数据:


PHP 代码


1.  $name = $User->name;  


2.  $email = $User->email; 


遍历查询到的数据对象属性


PHP 代码


1.  foreach  ($User  as  $key=>$val){  


2.    echo($key.':'.$val);  


3.  }  


// 或者进行相关的数据更改和保存操作


也可以用变量保存下来以便随时使用。


PHP 代码


1.  $user = $User->find(8); 


对于上面的查询条件,我们还可以使用getById来完成相同的查询


PHP 代码


1.    $User->getById(8); 


需要注意的是,对于find方法来说,即使查询结果有多条记录,也只会返回符合条件的第一条记录,如果要返回符合要求的所有记录,请使用findAll方法。


PHP 代码


1.    // 查询主键为1、3、8的记录集   


2.    $User->findAll('1,3,8');   


3.    // 遍历数据列表  


4.    foreach  ($User  as  $vo){  


5.    dump($vo->name);  


6.    }  


更多的查询操作请参考后面章节的内容。


       


更新记录


了解了查询记录后,更新操作就显得非常简单了。


// 还可以使用下面的方式更新


PHP 代码


1.  $User->find(1); // 查找主键为1的数据  


2.  $User->name = 'TOPThink'; // 修改数据对象  


3.  $User->save(); // 保存当前数据对象  


4.  $User->score = '(score+1)'; // 对用户的积分加1  


5.  $User->save(); 


如果不是使用数据对象的方式来保存,可以传入要保存的数据和条件


PHP 代码


1.  $data['id'] = 1;  


2.  $data['name'] = 'TopThink';  


3.  $User->save($data); 


除了save方法外,你还可以使用setField方法来更新特定字段的值,例如:


PHP 代码


1.  $User->setField('name','TopThink','id=1'); 


同样可以支持对字段的操作


PHP 代码


1.  $User->setField('score','(score+1)','id=1');  


2.  // 或者改成下面的  


3.  $User->setInc('score','id=1'); 


删除记录


 如果你的主键是自动增长类型,不需要传入主键的值就可以新建数据,并且如果插入数据成功的话,Add方法的返回值就是最新插入的主键值,可以直接获取。

 


echo $user->getLastSql();

 

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

맨티스BT

맨티스BT

Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

ZendStudio 13.5.1 맥

ZendStudio 13.5.1 맥

강력한 PHP 통합 개발 환경

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.