Yii2聯合查詢(配合GridView)
最近在使用Yii2來做網站,感觸比較深的是雖然感覺自己看文件看得七七八八,看上去貌似也好像懂的基本用法,但真正的困難還是在於如何應用到自己的實際開發當中。
今天在做網站的後臺管理,碰巧需要多表查詢,可能自己理解力比較差,折騰了很久才懂得怎麼使用,在這裡記錄一下。
下面我們是使用AR模型來實現多表查詢:
<a>1、第一步我們先建立AR模型,分別為Customer(對應customer使用者表)以及Order(對應order訂單表,它與customer表為多對一關係)</a>
<code>
class Customer extends \yii\db\ActiveRecord{
//這裡返回訂單中金額大於100的訂單
public function getBigOrders($threshold = 100) {
return $this->hasMany(Order::className(), ['customer_id' => 'id'])
->where('subtotal > :threshold', [':threshold' => $threshold])
->orderBy('id');
}
}
class Order extends \yii\db\ActiveRecord{
// 訂單和客戶通過 Customer.id -> customer_id 關聯建立一對一關係
public function getCustomer() {
return $this->hasOne(Customer::className(), ['id' =>'customer_id']); }}
</code>
<a>2、查詢擁有金額大於100的訂單的所有使用者並用gridview顯示</a>
在控制器<code>SiteController.php</code>中
<code>
namespace app\models\controller;
use yii\data\ActiveDataProvider;
class SiteController extend Controller {
public function actionGetorders {
$dataProvider = new ActiveDataProvider([
'query' => Customer::find()->innerJoinWith('bigorders')//如果還需要關聯到第三個表則可使用with('books')
'pagination' => [
'pageSize' => 10,//每頁10條
],
]);
return $this->render('index',['dataProvider' => $dataProvider]);
}
}
</code>
<strong>在這裡需要注意下的是:
1)分頁器Pagination以及資料提供器ActiveDataProvider都僅支援yii\db\ActiveQuery物件而非陣列形式,所以後面加上了all()方法或者是使用了Yii::$app->db->createCommand()方法是會報錯的;
2)此外,如果是使用了Order::findeBySql()來執行查詢也是出現錯誤的;
</strong>
<a>3、在view資料夾的index.php中顯示資料</a>
<code>use yii\grid\GridView;
<?php
echo GridView::widget([
'dataProvider' => $dataProvider,
]);
相關文章
- jpa動態查詢與多表聯合查詢
- 按月分表聯合查詢
- SQL 三表聯合查詢SQL
- JPA 之 多表聯合查詢
- 01-sql-聯合查詢SQL
- 基於聯合查詢的注入
- mybatis多表聯合查詢的寫法MyBatis
- 模型聯合查詢返回指定欄位模型
- MYSQL學習筆記24: 多表查詢(聯合查詢,Union, Union All)MySql筆記
- 多表聯合查詢 - 基於註解SQLSQL
- Yii2實現跨mysql資料庫關聯查詢排序功能MySql資料庫排序
- yii2 資料庫常見查詢資料庫
- Yii2的GridView使用大全 --- 18個問答View
- Elasticsearch複合查詢——boosting查詢Elasticsearch
- 資料庫學習(六)聯合查詢union資料庫
- C#聯合halcon實現直線查詢C#
- 合併查詢
- GridView列相同合併View
- jpa 聯合查詢資料,查詢使用者資訊與部門資訊
- django 兩個表或多個表聯合查詢Django
- mysql-分組查詢-子查詢-連線查詢-組合查詢MySql
- Yii2:ArrayDataProvider 小改動後支援分頁查詢IDE
- 區分關聯子查詢和非關聯子查詢
- MySQL--操作簡記(聯結表,組合查詢(UNION))MySql
- 組合查詢(UNION)
- yii2接入pgSQL(查詢不到表The table does not exist: {{%user}})SQL
- 使用 Amazon Aurora PostgreSQL 聯合查詢、pg_cron 和 Amazon LambdaSQL
- MySQL全面瓦解11:子查詢和組合查詢MySql
- Elasticsearch 複合查詢——多字串多欄位查詢Elasticsearch字串
- 20240719資料庫關聯查詢、條件查詢資料庫
- Spring JPA 聯表查詢Spring
- JPA多表關聯查詢
- Mongodb 關聯表查詢MongoDB
- 深入sql多表差異化聯合查詢的問題詳解SQL
- MySQL 合併查詢union 查詢出的行合併到一個表中MySql
- Yii2 search 搜尋[資料小部件--GridView--資料過濾]View
- mysql三表關聯查詢MySql
- mysql 三表關聯查詢MySql
- MySQL入門系列:查詢簡介(七)之組合查詢MySql