Rumah > rangka kerja php > ThinkPHP > Cara untuk bertanya dan memproses data dalam rangka kerja ThinkPHP5

Cara untuk bertanya dan memproses data dalam rangka kerja ThinkPHP5

藏色散人
Lepaskan: 2021-12-23 16:33:33
ke hadapan
2848 orang telah melayarinya

Lajur tutorial rangka kerja thinkphp berikut akan memperkenalkan kepada anda cara membuat pertanyaan dan memproses data dalam rangka kerja ThinkPHP5 saya harap ia dapat membantu rakan yang memerlukan.

Saya menghadapi beberapa masalah semasa memproses hasil pertanyaan pangkalan data Rekod beberapa kaedah pertanyaan dan pemprosesan hasil yang digunakan.

1. Tanya rekod tertentu

$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']);
}
Salin selepas log masuk

2 medan berbilang rekod, dan memproses hasilnya, hasilnya ialah set tatasusunan

$device_number_list = model("PackageWhitelist")->where($where)->field("device_number")->find();
Salin selepas log masuk
$this->assign("device_number",$device_number_list['device_number']);
Salin selepas log masuk
4. Tanya berbilang rekod

$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"];
  }
}
Salin selepas log masuk
5.

$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"];
  }
}
Salin selepas log masuk
Mari kita ringkaskan tiga cara membuat pertanyaan pangkalan data dalam TP5

Kaedah 1: Pertanyaan sql asli
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];
  }
}
Salin selepas log masuk

Contoh kod:

kaedah Dua: Gunakan pembina pertanyaan

Contoh kod:
<?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;
  }
}
Salin selepas log masuk

Kaedah tiga: ORM (Pemetaan Perhubungan Objek) Pemetaan hubungan objek

Perbezaan utama dalam menggunakan ORM untuk tanya pangkalan data ialah Tulis model yang mewarisi kelas thinkmodel, dan kemudian pengawal boleh menggunakan kaedah lalai model untuk mendapatkan data dan bukannya menulis kaedah pemerolehan khusus dalam model
<?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;
  }
}
Salin selepas log masuk

Contoh kod:

model:

pengawal:

Atas ialah kandungan terperinci Cara untuk bertanya dan memproses data dalam rangka kerja ThinkPHP5. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:jb51.net
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan