Heim > Artikel > Backend-Entwicklung > ThinkPHP5-Methode zum Abfragen von Daten und Verarbeiten von Ergebnissen
Dieser Artikel stellt hauptsächlich die Methode zum Abfragen von Daten und zum Verarbeiten von Ergebnissen in ThinkPHP5 vor. Er fasst und analysiert gängige Abfrageanweisungen und drei Möglichkeiten zum Abfragen der Datenbank in ThinkPHP5 mit Beispielen.
Hierauf können Sie sich beziehen Der Artikel erklärt die Beispiele. Erfahren Sie, wie Sie mit ThinkPHP5 Daten abfragen und Ergebnisse verarbeiten. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:
Bei der Verarbeitung der Datenbankabfrageergebnisse sind einige Probleme aufgetreten. Notieren Sie die verschiedenen verwendeten Abfragemethoden und die Ergebnisverarbeitung.
1. Einen bestimmten Datensatz abfragen
$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. Ein bestimmtes Feld eines bestimmten Datensatzes abfragen
$device_number_list = model("PackageWhitelist")->where($where)->field("device_number")->find();
$this->assign("device_number",$device_number_list['device_number']);
3. Fragen Sie ein bestimmtes Feld mit mehreren Datensätzen ab und verarbeiten Sie die Ergebnisse. Das Ergebnis ist ein Array-Satz.
$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. Mehrere Datensätze abfragen
$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. Im Seitenformat abfragen und die Ergebnisse verarbeiten.
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]; } }
Fassen wir die drei Möglichkeiten zum Abfragen der Datenbank in TP5 zusammen
Methode 1: Native SQL-Abfrage
Codebeispiel :
<?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; } }
Methode 2: Abfrage-Builder verwenden
Codebeispiel:
<?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; } }
Methode 3: ORM (Object Relation Mapping)
Der Hauptunterschied bei der Verwendung von ORM zum Abfragen der Datenbank besteht darin, dass das Modell die thinkmodel-Klasse erbt und der Controller dann die Standardmethode des Modells zum Abrufen verwenden kann Daten. Anstatt eine dedizierte Erfassungsmethode in das Modell zu schreiben
Codebeispiel:
Modell:
<?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; } }
Verwandte Empfehlungen:
Zusammenfassung der thinkPHP-Abfragemethoden
Fragen zur Thinkphp-Abfrage und zum Paging
Das obige ist der detaillierte Inhalt vonThinkPHP5-Methode zum Abfragen von Daten und Verarbeiten von Ergebnissen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!