Maison > cadre php > PensezPHP > le corps du texte

Comment interroger et traiter des données dans le framework ThinkPHP5

藏色散人
Libérer: 2021-12-23 16:33:33
avant
2819 Les gens l'ont consulté

La colonne suivante du didacticiel thinkphpframework vous présentera comment interroger et traiter des données dans le framework ThinkPHP5. J'espère qu'elle sera utile aux amis dans le besoin !

J'ai rencontré quelques problèmes lors du traitement des résultats des requêtes de base de données. Enregistrez les différentes méthodes de requête et le traitement des résultats utilisés.

1. Interrogez un certain enregistrement

$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']);
}
Copier après la connexion

2. Interrogez un certain champ d'un certain enregistrement

$device_number_list = model("PackageWhitelist")->where($where)->field("device_number")->find();
Copier après la connexion
$this->assign("device_number",$device_number_list['device_number']);
Copier après la connexion

3. Interrogez un certain champ de plusieurs enregistrements et traitez les résultats. Le résultat est un ensemble de tableaux

$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"];
  }
}
Copier après la connexion

4. plusieurs enregistrements Enregistrez

$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"];
  }
}
Copier après la connexion

5. Requête sous forme de page et traitez les résultats.

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];
  }
}
Copier après la connexion

Résumons les trois façons d'interroger la base de données dans TP5

Première méthode : requête SQL native

Exemple de code :

<?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(&#39;select * from banner_item where banner_id=?&#39;,[$id]);
    return $result;
  }
}
Copier après la connexion

Méthode deux : utiliser le générateur de requêtes

Exemple de code :

<?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(&#39;select * from banner_item where banner_id=?&#39;,[$id]);
//    return $result;
    //2.使用查询构建器
    /*
     * 链式查询Db::table(&#39;banner_item&#39;)->where(&#39;banner_id&#39;,&#39;=&#39;,$id) 返回查询对象,->select();返回查询结果,
     * 除了select操作还有 find(返回一条数据) update delete insert
     * 对应的where 也分三种,1.表达式where(&#39;字段名&#39;,&#39;表达式&#39;,&#39;查询条件&#39;) 2.数组发 3.闭包。
     */
    // 2.1 表达式法
//    $result = Db::table(&#39;banner_item&#39;)
//      ->where(&#39;banner_id&#39;,&#39;=&#39;,$id)
//      ->select();
//    return $result;
    //2.2 闭包法
    $result = Db::table(&#39;banner_item&#39;)
      ->where(function ($query) use($id){
        $query->where(&#39;banner_id&#39;,&#39;=&#39;,$id);
      })
      ->select();
    return $result;
  }
}
Copier après la connexion

Troisième méthode : ORM (Objet Mappage de relation) Mappage objet-relationnel

La principale différence lors de l'utilisation d'ORM pour interroger la base de données est d'écrire la classe thinkmodel qui hérite du modèle, puis le contrôleur peut utiliser la méthode par défaut du modèle pour obtenir les données au lieu d'écrire un méthode d'acquisition dédiée dans le model

Exemple de code :

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(&#39;select * from banner_item where banner_id=?&#39;,[$id]);
////    return $result;
//    //2.使用查询构建器
//    /*
//     * 链式查询Db::table(&#39;banner_item&#39;)->where(&#39;banner_id&#39;,&#39;=&#39;,$id) 返回查询对象,->select();返回查询结果,
//     * 除了select操作还有 find(返回一条数据) update delete insert
//     * 对应的where 也分三种,1.表达式where(&#39;字段名&#39;,&#39;表达式&#39;,&#39;查询条件&#39;) 2.数组发 3.闭包。
//     */
//
//    // 2.1 表达式法
////    $result = Db::table(&#39;banner_item&#39;)
////      ->where(&#39;banner_id&#39;,&#39;=&#39;,$id)
////      ->select();
////    return $result;
//    //2.2 闭包法
//    $result = Db::table(&#39;banner_item&#39;)
//      ->where(function ($query) use($id){
//        $query->where(&#39;banner_id&#39;,&#39;=&#39;,$id);
//
//      })
//      ->select();
//    return $result;
//
//
//
//
//
//  }
}
Copier après la connexion

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;
  }
}
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:jb51.net
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal