이 글에서는 주로 ThinkPHP5에서 데이터를 쿼리하고 결과를 처리하는 방법을 소개합니다. 일반적인 쿼리문과 thinkPHP5에서 데이터베이스를 쿼리하는 세 가지 방법을 예제와 함께 정리하고 분석합니다. ThinkPHP5 Results 메소드의 쿼리 데이터 및 처리. 참고할 수 있도록 모든 사람과 공유하세요. 세부 사항은 다음과 같습니다.
데이터베이스 쿼리 결과를 처리할 때 몇 가지 문제가 발생했습니다. 사용한 여러 쿼리 방법과 결과 처리를 기록해 보세요.
1. 특정 레코드 쿼리
$where=array( "version_id"=>$version_id ); $data = model("PackageWhitelist")->where($where)->find(); $this->assign("package_id",$package_id); $where=array( "package_id"=>$package_id ); $data = model("Package")->where($where)->find(); if($data){ $this->assign("target_version",$data['target_version']); }
2. 특정 레코드의 특정 필드 쿼리
$device_number_list = model("PackageWhitelist")->where($where)->field("device_number")->find();
$this->assign("device_number",$device_number_list['device_number']);
3. , 결과는 배열 집합입니다
$where=array( "version_id"=>$version_id ); $data = model("PackageWhitelist")->where($where)->field("device_number")->select(); $device_number_list=''; foreach($data as $val){ $list = $val->toArray(); if($device_number_list){ $device_number_list=$device_number_list.';'.$list["device_number"]; }else{ $device_number_list=$list["device_number"]; } }
4. 여러 레코드를 쿼리합니다
$where=array( "version_id"=>$version_id ); $data = model("PackageWhitelist")->where($where)->select(); $device_number_list=''; foreach($data as $val){ $list = $val->toArray(); if($device_number_list){ $device_number_list=$device_number_list.';'.$list["device_number"]; }else{ $device_number_list=$list["device_number"]; } }
5.
public function index($version_id){ $where=array( "version_id"=>$version_id ); $version_name = model("Version")->where($where)->field("version_name")->find(); $listrows=config("LISTROWS")?config("LISTROWS"):10; $package_lists=model("Package")->where($where)->paginate($listrows); $package_infos = $package_lists->toArray()["data"]; foreach($package_infos as $key=>$value){ $package_infos[$key] = array("source_version" => $version_name["version_name"]) + $package_infos[$key]; } }
TP5에서 데이터베이스를 쿼리하는 세 가지 방법을 요약해 보겠습니다
방법 1: 기본 SQL 쿼리
코드 샘플:
<?php /** * Created by PhpStorm. * User: chenzhitao * Date: 2017/5/8 * Time: 下午2:15 */ namespace app\api\model; use think\Db; use think\Exception; class Banner { public static function getBannerByID($id){ $result = Db::query('select * from banner_item where banner_id=?',[$id]); return $result; } }
방법 2: 쿼리 빌더 사용
코드 샘플:
<?php /** * Created by PhpStorm. * User: chenzhitao * Date: 2017/5/8 * Time: 下午2:15 */ namespace app\api\model; use think\Db; use think\Exception; class Banner { public static function getBannerByID($id){ //1.使用原生sql // $result = Db::query('select * from banner_item where banner_id=?',[$id]); // return $result; //2.使用查询构建器 /* * 链式查询Db::table('banner_item')->where('banner_id','=',$id) 返回查询对象,->select();返回查询结果, * 除了select操作还有 find(返回一条数据) update delete insert * 对应的where 也分三种,1.表达式where('字段名','表达式','查询条件') 2.数组发 3.闭包。 */ // 2.1 表达式法 // $result = Db::table('banner_item') // ->where('banner_id','=',$id) // ->select(); // return $result; //2.2 闭包法 $result = Db::table('banner_item') ->where(function ($query) use($id){ $query->where('banner_id','=',$id); }) ->select(); return $result; } }
방법 3: ORM(Object Relation Mapping)
ORM을 사용하여 데이터베이스를 쿼리할 때의 주요 차이점은 모델이 thinkmodel 클래스를 상속하고 컨트롤러가 대신 모델의 기본 방법을 사용하여 데이터를 얻을 수 있다는 것입니다. 모델에 전용 획득 방법 작성
코드 예:
model:
<?php /** * Created by PhpStorm. * User: chenzhitao * Date: 2017/5/8 * Time: 下午2:15 */ namespace app\api\model; use think\Db; use think\Model; class Banner extends Model { // public static function getBannerByID($id){ // //1.使用原生sql //// $result = Db::query('select * from banner_item where banner_id=?',[$id]); //// return $result; // //2.使用查询构建器 // /* // * 链式查询Db::table('banner_item')->where('banner_id','=',$id) 返回查询对象,->select();返回查询结果, // * 除了select操作还有 find(返回一条数据) update delete insert // * 对应的where 也分三种,1.表达式where('字段名','表达式','查询条件') 2.数组发 3.闭包。 // */ // // // 2.1 表达式法 //// $result = Db::table('banner_item') //// ->where('banner_id','=',$id) //// ->select(); //// return $result; // //2.2 闭包法 // $result = Db::table('banner_item') // ->where(function ($query) use($id){ // $query->where('banner_id','=',$id); // // }) // ->select(); // return $result; // // // // // // } }
controller:
<?php /** * Created by PhpStorm. * User: chenzhitao * Date: 2017/5/7 * Time: 下午1:49 */ namespace app\api\controller\v1; use app\api\validate\IDMustBePositiveInt; use app\lib\exception\BannerMissException; use app\api\model\Banner as BannerModel; class Banner { public function getBanner($id){ //调用验证器 (new IDMustBePositiveInt())->goCheck(); // $banner = BannerModel::getBannerByID($id); $banner = BannerModel::get($id); if(!$banner){ throw new BannerMissException(); } return $banner; } }
관련 권장 사항:
think PHP 쿼리 방법 요약 thinkphp 쿼리 및 페이징에 대한 질문위 내용은 데이터를 쿼리하고 결과를 처리하는 ThinkPHP5 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!