最近在使用Yii2來做網站侈沪,感觸比較深的是雖然感覺自己看文檔看得七七八八堤撵,看上去貌似也好像懂的基本用法价脾,但真正的困難還是在于如何應用到自己的實際開發(fā)當中。
今天在做網站的后臺管理蝶俱,碰巧需要多表查詢班利,可能自己理解力比較差,折騰了很久才懂得怎么使用跷乐,在這里記錄一下肥败。
下面我們是使用AR模型來實現多表查詢:
<a>1、第一步我們先創(chuàng)建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 關聯(lián)建立一對一關系
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')//如果還需要關聯(lián)到第三個表則可使用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()來執(zhí)行查詢也是出現錯誤的如输;
</strong>
<a>3鼓黔、在view文件夾的index.php中顯示數據</a>
<code>use yii\grid\GridView;
<?php
echo GridView::widget([
'dataProvider' => $dataProvider,
]);
Yii2聯(lián)合查詢(配合GridView)
最后編輯于 :
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
- 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來酪惭,“玉大人希痴,你說我怎么就攤上這事〈焊校” “怎么了砌创?”我有些...
- 正文 為了忘掉前任,我火速辦了婚禮扫倡,結果婚禮上谦秧,老公的妹妹穿的比我還像新娘竟纳。我一直安慰自己,他們只是感情好疚鲤,可當我...
- 文/花漫 我一把揭開白布锥累。 她就那樣靜靜地躺著,像睡著了一般集歇。 火紅的嫁衣襯著肌膚如雪桶略。 梳的紋絲不亂的頭發(fā)上,一...
- 文/蒼蘭香墨 我猛地睜開眼旭愧,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了宙暇?” 一聲冷哼從身側響起输枯,我...
- 正文 年R本政府宣布厘灼,位于F島的核電站夹纫,受9級特大地震影響,放射性物質發(fā)生泄漏设凹。R本人自食惡果不足惜舰讹,卻給世界環(huán)境...
- 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望闪朱。 院中可真熱鬧月匣,春花似錦钻洒、人聲如沸。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至萍悴,卻和暖如春头遭,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背癣诱。 一陣腳步聲響...
推薦閱讀更多精彩內容
- 我們用實例來說明這一部分 表結構 現在有客戶表艺蝴、訂單表、圖書表鸟废、作者表猜敢, 客戶表Customer(idcustom...
- 大家可以從任何一個gii生成model類開始代碼上溯,會發(fā)現:yii2的model層基于ActiveRecord實...
- 執(zhí)行 SQL 查詢 一旦擁有了 DB Connection 實例缩擂, 可以按照下列步驟來執(zhí)行 SQL 查詢: 使用純...