Méthode ThinkPHP5 pour interroger les données et traiter les résultats

不言
Libérer: 2023-03-25 16:10:02
original
4299 Les gens l'ont consulté

Cet article présente principalement la méthode d'interrogation des données et de traitement des résultats dans ThinkPHP5. Il résume et analyse les instructions de requête courantes et trois façons d'interroger la base de données dans thinkPHP5 avec des exemples. Les amis dans le besoin peuvent se référer à

Ceci. L'article explique les exemples. Apprenez à interroger des données et à traiter les résultats à l'aide de ThinkPHP5. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :

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

1. Interroger 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. Interroger 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=&#39;&#39;;
foreach($data as $val){
  $list = $val->toArray();
  if($device_number_list){
    $device_number_list=$device_number_list.&#39;;&#39;.$list["device_number"];
  }else{
    $device_number_list=$list["device_number"];
  }
}
Copier après la connexion

4. Interroger plusieurs enregistrements

$where=array(
  "version_id"=>$version_id
);
$data = model("PackageWhitelist")->where($where)->select();
$device_number_list=&#39;&#39;;
foreach($data as $val){
  $list = $val->toArray();
  if($device_number_list){
    $device_number_list=$device_number_list.&#39;;&#39;.$list["device_number"];
  }else{
    $device_number_list=$list["device_number"];
  }
}
Copier après la connexion

5. formater la requête et traiter 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 manières d'interroger la base de données dans TP5

Méthode 1 : 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 2 : 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

Méthode 3 : ORM (Object Relation Mapping) Mappage relationnel d'objet

La principale différence dans l'utilisation d'ORM pour interroger la base de données est que le modèle est écrit pour hériter de la classe thinkmodel, puis le contrôleur peut utiliser le modèle La méthode par défaut pour obtenir des données au lieu d'écrire une méthode d'acquisition dédiée dans le modèle

Exemple de code :

modèle :

<?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

contrôleur :

<?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

Recommandations associées :

Résumé de la méthode de requête thinkPHP

Questions sur les requêtes et la pagination thinkphp

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:php.cn
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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!