Rumah rangka kerja php YII yii2怎么查询数据

yii2怎么查询数据

Dec 09, 2019 pm 02:17 PM
yii2 data Pertanyaan

yii2怎么查询数据

数据查询

User::find()->all();    此方法返回所有数据;
User::findOne($id);   此方法返回 主键 id=1  的一条数据(举个例子); 
User::find()->where(['name' => '小伙儿'])->one();   此方法返回 ['name' => '小伙儿'] 的一条数据;
User::find()->where(['name' => '小伙儿'])->all();   此方法返回 ['name' => '小伙儿'] 的所有数据;
User::find()->orderBy('id DESC')->all();   此方法是排序查询;
User::findBySql('SELECT * FROM user')->all();  此方法是用 sql  语句查询 user 表里面的所有数据;
User::findBySql('SELECT * FROM user')->one();  此方法是用 sql  语句查询 user 表里面的一条数据;
User::find()->andWhere(['sex' => '男', 'age' => '24'])->count('id');   统计符合条件的总条数;
User::find()->one();    此方法返回一条数据;
User::find()->all();    此方法返回所有数据;
User::find()->count();    此方法返回记录的数量;
User::find()->average();    此方法返回指定列的平均值;
User::find()->min();    此方法返回指定列的最小值 ;
User::find()->max();    此方法返回指定列的最大值 ;
User::find()->scalar();    此方法返回值的第一行第一列的查询结果;
User::find()->column();    此方法返回查询结果中的第一列的值;
User::find()->exists();    此方法返回一个值指示是否包含查询结果的数据行;
User::find()->batch(10);  每次取 10 条数据 
User::find()->each(10);  每次取 10 条数据, 迭代查询
Salin selepas log masuk

多表查询:

/* 多表联查 */
$model=new Customer();
$model->fiind()->join(‘LEFT JOIN‘,‘student‘,‘student.cid=customer.id‘)
            ->where(‘student.id‘=>\Yii::$app->user->id)
            ->andwhere(‘is_ok=1‘)
            ->one()
Salin selepas log masuk

关联查询

使用 AR 方法也可以查询数据表的关联数据(如,选出表A的数据可以拉出表B的关联数据)。 有了 AR, 返回的关联数据连接就像连接关联主表的 AR 对象的属性一样。

建立关联关系后,通过 $customer->orders 可以获取 一个 Order 对象的数组,该数组代表当前客户对象的订单集。

定义关联关系使用一个可以返回 [[yii\db\ActiveQuery]] 对象的 getter 方法, [[yii\db\ActiveQuery]]对象有关联上下文的相关信息,因此可以只查询关联数据。

class Customer extends \yii\db\ActiveRecord
{
    public function getOrders()
    {
        // 客户和订单通过 Order.customer_id -> id 关联建立一对多关系
        return $this->hasMany(Order::className(), ['customer_id' => 'id']);
    }
}
 
class Order extends \yii\db\ActiveRecord
{
    // 订单和客户通过 Customer.id -> customer_id 关联建立一对一关系
    public function getCustomer()
    {
        return $this->hasOne(Customer::className(), ['id' => 'customer_id']);
    }
}
Salin selepas log masuk

以上使用了[[yii\db\ActiveRecord::hasMany()]] 和 [[yii\db\ActiveRecord::hasOne()]]方法。以上两例分别是关联数据多对一关系和一对一关系的建模范例。如,一个客户有很多订单,一个订单只归属一个客户。两个方法都有两个参数并返回[[yii\db\ActiveQuery]]对象。

建立关联关系后,获取关联数据和获取组件属性一样简单, 执行以下相应getter方法即可:

// 取得客户的订单
$customer = Customer::findOne(1);
$orders = $customer->orders; // $orders 是 Order 对象数组
Salin selepas log masuk

以上代码实际执行了以下两条 SQL 语句:

SELECT * FROM customer WHERE id=1;
SELECT * FROM order WHERE customer_id=1;
Salin selepas log masuk

有时候需要在关联查询中传递参数,如不需要返回客户全部订单, 只需要返回购买金额超过设定值的大订单, 通过以下getter方法声明一个关联数据 bigOrders:

class Customer extends \yii\db\ActiveRecord
{
    public function getBigOrders($threshold = 100)
    {
        return $this->hasMany(Order::className(), ['customer_id' => 'id'])
            ->where('subtotal > :threshold', [':threshold' => $threshold])
            ->orderBy('id');
    }
}
Salin selepas log masuk

联合查询

使用关系数据库时,普遍要做的是连接多个表并明确地运用各种 JOIN 查询。 JOIN SQL语句的查询条件和参数,使用 [[yii\db\ActiveQuery::joinWith()]] 可以重用已定义关系并调用 而不是使用 [[yii\db\ActiveQuery::join()]] 来实现目标。

// 查找所有订单并以客户 ID 和订单 ID 排序,并贪婪加载 "customer" 表
$orders = Order::find()->joinWith('customer')->orderBy('customer.id, order.id')->all();
// 查找包括书籍的所有订单,并以 `INNER JOIN` 的连接方式即时加载 "books" 表
$orders = Order::find()->innerJoinWith('books')->all();
Salin selepas log masuk

以上方法[[yii\db\ActiveQuery::innerJoinWith()|innerJoinWith()]]是访问INNER JOIN类型的[[yii\db\ActiveQuery::joinWith()

|joinWith()]]的快捷方式。

可以连接一个或多个关联关系,可以自由使用查询条件到关联查询, 也可以嵌套连接关联查询。如:

// 连接多重关系
// 找出24小时内注册客户包含书籍的订单
$orders = Order::find()->innerJoinWith([
    'books',
    'customer' => function ($query) {
        $query->where('customer.created_at > ' . (time() - 24 * 3600));
    }
])->all();
// 连接嵌套关系:连接 books 表及其 author 列
$orders = Order::find()->joinWith('books.author')->all();
Salin selepas log masuk

代码背后, Yii 先执行一条 JOIN SQL 语句把满足 JOIN SQL 语句查询条件的主要模型查出, 然后为每个关系执行一条查询语句, bing填充相应的关联记录。

[[yii\db\ActiveQuery::joinWith()|joinWith()]] 和 [[yii\db\ActiveQuery::with()|with()]] 的区别是 前者连接主模型类和关联模型类的数据表来检索主模型, 而后者只查询和检索主模型类。 检索主模型

由于这个区别,你可以应用只针对一条 JOIN SQL 语句起效的查询条件。 如,通过关联模型的查询条件过滤主模型,如前例, 可以使用关联表的列来挑选主模型数据,

当使用 [[yii\db\ActiveQuery::joinWith()|joinWith()]] 方法时可以响应没有歧义的列名。 In the above examples, we useitem.id and order.id to disambiguate the id column references 因为订单表和项目表都包括 id 列。

当连接关联关系时,关联关系默认使用即时加载。你可以 通过传参数 $eagerLoading 来决定在指定关联查询中是否使用即时加载。

默认 [[yii\db\ActiveQuery::joinWith()|joinWith()]] 使用左连接来连接关联表。 你也可以传 $joinType 参数来定制连接类型。 你也可以使用 [[yii\db\ActiveQuery::innerJoinWith()|innerJoinWith()]]。

Yii2 分页

控制器 CommentController 里面的任意一个方法,在这里我的方法是 actionComment();

use yii\data\Pagination;
use app\models\Comment;
  public function actionComment(){
       $data = Comment::find()->andWhere(['id' => '10']);
       $pages = new Pagination(['totalCount' =>$data->count(), 'pageSize' => '2']);
       $model = $data->offset($pages->offset)->limit($pages->limit)->all();
       
       return $this->render('comment',[
             'model' => $model,
             'pages' => $pages,
       ]);
  }
Salin selepas log masuk

view 里面的代码

<?php
use yii\widgets\LinkPager;
?>
      foreach($model as $key=>$val)
      {
           这里就是遍历数据
      }
      <?= LinkPager::widget([&#39;pagination&#39; => $pages]); ?>
Salin selepas log masuk

in() 操作

SELECT * FROM `categ_price` WHERE `id` IN (9, 11)

$categ_price_id=[9>1,11=>3]
  $categPriceModel= \common\models\CategPrice::find()->where([&#39;id&#39; =>array_keys($categ_price_id)])->all();
  #>where([&#39;id&#39; => [1, 2, 3]])
Salin selepas log masuk

not in() 操作

SELECT * FROM `shop` WHERE (status=1) AND (`id` NOT IN (88, 93))

$shopModel= Shop::find()->where(&#39;status=1&#39;)->andWhere([&#39;not in&#39;,&#39;id&#39;,[88,98]])->all();
Salin selepas log masuk

PHP中文网,有大量免费的Yii入门教程,欢迎大家学习!

Atas ialah kandungan terperinci yii2怎么查询数据. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Gunakan ddrescue untuk memulihkan data pada Linux Gunakan ddrescue untuk memulihkan data pada Linux Mar 20, 2024 pm 01:37 PM

DDREASE ialah alat untuk memulihkan data daripada fail atau peranti sekat seperti cakera keras, SSD, cakera RAM, CD, DVD dan peranti storan USB. Ia menyalin data dari satu peranti blok ke peranti lain, meninggalkan blok data yang rosak dan hanya memindahkan blok data yang baik. ddreasue ialah alat pemulihan yang berkuasa yang automatik sepenuhnya kerana ia tidak memerlukan sebarang gangguan semasa operasi pemulihan. Selain itu, terima kasih kepada fail peta ddasue, ia boleh dihentikan dan disambung semula pada bila-bila masa. Ciri-ciri utama lain DDREASE adalah seperti berikut: Ia tidak menimpa data yang dipulihkan tetapi mengisi jurang sekiranya pemulihan berulang. Walau bagaimanapun, ia boleh dipotong jika alat itu diarahkan untuk melakukannya secara eksplisit. Pulihkan data daripada berbilang fail atau blok kepada satu

Sumber terbuka! Di luar ZoeDepth! DepthFM: Anggaran kedalaman monokular yang cepat dan tepat! Sumber terbuka! Di luar ZoeDepth! DepthFM: Anggaran kedalaman monokular yang cepat dan tepat! Apr 03, 2024 pm 12:04 PM

0. Apakah fungsi artikel ini? Kami mencadangkan DepthFM: model anggaran kedalaman monokular generatif yang serba boleh dan pantas. Sebagai tambahan kepada tugas anggaran kedalaman tradisional, DepthFM juga menunjukkan keupayaan terkini dalam tugas hiliran seperti mengecat kedalaman. DepthFM cekap dan boleh mensintesis peta kedalaman dalam beberapa langkah inferens. Mari kita baca karya ini bersama-sama ~ 1. Tajuk maklumat kertas: DepthFM: FastMonocularDepthEstimationwithFlowMatching Pengarang: MingGui, JohannesS.Fischer, UlrichPrestel, PingchuanMa, Dmytr

Google gembira: prestasi JAX mengatasi Pytorch dan TensorFlow! Ia mungkin menjadi pilihan terpantas untuk latihan inferens GPU Google gembira: prestasi JAX mengatasi Pytorch dan TensorFlow! Ia mungkin menjadi pilihan terpantas untuk latihan inferens GPU Apr 01, 2024 pm 07:46 PM

Prestasi JAX, yang dipromosikan oleh Google, telah mengatasi Pytorch dan TensorFlow dalam ujian penanda aras baru-baru ini, menduduki tempat pertama dalam 7 penunjuk. Dan ujian tidak dilakukan pada TPU dengan prestasi JAX terbaik. Walaupun dalam kalangan pembangun, Pytorch masih lebih popular daripada Tensorflow. Tetapi pada masa hadapan, mungkin lebih banyak model besar akan dilatih dan dijalankan berdasarkan platform JAX. Model Baru-baru ini, pasukan Keras menanda aras tiga hujung belakang (TensorFlow, JAX, PyTorch) dengan pelaksanaan PyTorch asli dan Keras2 dengan TensorFlow. Pertama, mereka memilih satu set arus perdana

Kelajuan Internet Data Selular Perlahan pada iPhone: Pembetulan Kelajuan Internet Data Selular Perlahan pada iPhone: Pembetulan May 03, 2024 pm 09:01 PM

Menghadapi ketinggalan, sambungan data mudah alih perlahan pada iPhone? Biasanya, kekuatan internet selular pada telefon anda bergantung pada beberapa faktor seperti rantau, jenis rangkaian selular, jenis perayauan, dsb. Terdapat beberapa perkara yang boleh anda lakukan untuk mendapatkan sambungan Internet selular yang lebih pantas dan boleh dipercayai. Betulkan 1 – Paksa Mulakan Semula iPhone Kadangkala, paksa memulakan semula peranti anda hanya menetapkan semula banyak perkara, termasuk sambungan selular. Langkah 1 – Hanya tekan kekunci naikkan kelantangan sekali dan lepaskan. Seterusnya, tekan kekunci Turun Kelantangan dan lepaskannya semula. Langkah 2 - Bahagian seterusnya proses adalah untuk menahan butang di sebelah kanan. Biarkan iPhone selesai dimulakan semula. Dayakan data selular dan semak kelajuan rangkaian. Semak semula Betulkan 2 – Tukar mod data Walaupun 5G menawarkan kelajuan rangkaian yang lebih baik, ia berfungsi lebih baik apabila isyarat lemah

12306 Cara menyemak rekod pembelian tiket sejarah Cara menyemak rekod pembelian tiket sejarah 12306 Cara menyemak rekod pembelian tiket sejarah Cara menyemak rekod pembelian tiket sejarah Mar 28, 2024 pm 03:11 PM

Muat turun versi terbaharu aplikasi tempahan tiket 12306 Ia adalah perisian pembelian tiket perjalanan yang semua orang sangat berpuas hati dengannya -pengesahan nama untuk membeli tiket dalam talian Semua pengguna Anda boleh membeli tiket perjalanan dan tiket penerbangan dengan mudah dan menikmati diskaun yang berbeza. Anda juga boleh mula menempah tempahan terlebih dahulu untuk merebut tiket Anda boleh menempah hotel atau pemindahan kereta khas Dengan itu, anda boleh pergi ke mana-mana yang anda mahu pergi dan membeli tiket dengan satu klik lebih mudah dan memudahkan semua orang lebih selesa. Kini editor memperincikannya dalam talian Menyediakan 12306 pengguna cara untuk melihat rekod pembelian tiket sejarah. 1. Buka Keretapi 12306, klik Saya di sudut kanan bawah, dan klik Pesanan Saya 2. Klik Dibayar pada halaman pesanan. 3. Pada halaman berbayar

Bagaimana untuk menyemak kelayakan akademik anda di Xuexin.com Bagaimana untuk menyemak kelayakan akademik anda di Xuexin.com Mar 28, 2024 pm 04:31 PM

Bagaimana untuk menyemak kelayakan akademik saya di Xuexin.com? Anda boleh menyemak kelayakan akademik anda di Xuexin.com Ramai pengguna tidak tahu cara menyemak kelayakan akademik mereka di Xuexin.com Seterusnya, editor membawakan tutorial grafik kepada pengguna tentang cara menyemak kelayakan akademik mereka di Xuexin.com pengguna datang dan lihat! Tutorial penggunaan Xuexin.com: Cara menyemak kelayakan akademik anda di Xuexin.com 1. Pintu masuk Xuexin.com: https://www.chsi.com.cn/ 2. Pertanyaan laman web: Langkah 1: Klik pada alamat Xuexin.com di atas untuk masuk ke laman utama Klik [Education Query]; Langkah 4: Pada halaman log masuk Masukkan maklumat dan klik [Log Masuk];

Daya hidup kecerdasan super membangkitkan! Tetapi dengan kedatangan AI yang mengemas kini sendiri, ibu tidak perlu lagi bimbang tentang kesesakan data Daya hidup kecerdasan super membangkitkan! Tetapi dengan kedatangan AI yang mengemas kini sendiri, ibu tidak perlu lagi bimbang tentang kesesakan data Apr 29, 2024 pm 06:55 PM

Saya menangis hingga mati. Dunia sedang membina model besar. Data di Internet tidak mencukupi. Model latihan kelihatan seperti "The Hunger Games", dan penyelidik AI di seluruh dunia bimbang tentang cara memberi makan data ini kepada pemakan yang rakus. Masalah ini amat ketara dalam tugas berbilang modal. Pada masa mereka mengalami kerugian, pasukan pemula dari Jabatan Universiti Renmin China menggunakan model baharu mereka sendiri untuk menjadi yang pertama di China untuk menjadikan "suapan data yang dijana model itu sendiri" menjadi kenyataan. Selain itu, ia merupakan pendekatan serampang dua mata dari segi pemahaman dan sisi penjanaan Kedua-dua pihak boleh menjana data baharu berbilang modal yang berkualiti tinggi dan memberikan maklum balas data kepada model itu sendiri. Apakah model? Awaker 1.0, model berbilang modal besar yang baru sahaja muncul di Forum Zhongguancun. Siapa pasukan itu? Enjin Sophon. Diasaskan oleh Gao Yizhao, pelajar kedoktoran di Sekolah Kecerdasan Buatan Hillhouse Universiti Renmin.

Robot pertama yang menyelesaikan tugas manusia secara autonomi muncul, dengan lima jari fleksibel dan kelajuan manusia luar biasa, dan model besar menyokong latihan angkasa maya Robot pertama yang menyelesaikan tugas manusia secara autonomi muncul, dengan lima jari fleksibel dan kelajuan manusia luar biasa, dan model besar menyokong latihan angkasa maya Mar 11, 2024 pm 12:10 PM

Minggu ini, FigureAI, sebuah syarikat robotik yang dilaburkan oleh OpenAI, Microsoft, Bezos, dan Nvidia, mengumumkan bahawa ia telah menerima hampir $700 juta dalam pembiayaan dan merancang untuk membangunkan robot humanoid yang boleh berjalan secara bebas dalam tahun hadapan. Dan Optimus Prime Tesla telah berulang kali menerima berita baik. Tiada siapa yang meragui bahawa tahun ini akan menjadi tahun apabila robot humanoid meletup. SanctuaryAI, sebuah syarikat robotik yang berpangkalan di Kanada, baru-baru ini mengeluarkan robot humanoid baharu, Phoenix. Pegawai mendakwa bahawa ia boleh menyelesaikan banyak tugas secara autonomi pada kelajuan yang sama seperti manusia. Pheonix, robot pertama di dunia yang boleh menyelesaikan tugas secara autonomi pada kelajuan manusia, boleh mencengkam, menggerakkan dan meletakkan setiap objek secara elegan di sisi kiri dan kanannya dengan perlahan. Ia boleh mengenal pasti objek secara autonomi

See all articles