第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

Yii框架不得不說的故事—基礎(chǔ)篇(1)

withy PHP開發(fā)工程師
難度中級(jí)
時(shí)長(zhǎng) 2小時(shí)39分
學(xué)習(xí)人數(shù)
綜合評(píng)分9.67
176人評(píng)價(jià) 查看評(píng)價(jià)
9.9 內(nèi)容實(shí)用
9.7 簡(jiǎn)潔易懂
9.4 邏輯清晰
  • 基礎(chǔ)篇總結(jié)
    查看全部
  • //2.關(guān)聯(lián)查詢的多次查詢 /*$customers = Customer::find()->all();//假設(shè)在顧客表里有100個(gè)顧客,全部選出來。select * from customer(1次) //遍歷100位顧客,把每一位顧客塞到$customer變量中 foreach($customers as $customer){ //每個(gè)顧客都通過orders屬性去訪問他的訂單數(shù)據(jù),每次都執(zhí)行select語句 $orders = $customer->orders;//select * from order where customer_id=...(100次),加上上面的1次,總共會(huì)調(diào)用101次sql查詢,執(zhí)行起來慢,會(huì)拖累整個(gè)代碼的運(yùn)行。 }*/ //Yii框架為了優(yōu)化這種查詢,提供了一個(gè)with()的方法。只執(zhí)行了2次sql查詢。 //sql語句會(huì)變成,先select * from customer;再select * from order where customer_id in(...)[這里的...不代表某一位顧客的id,它代表所有顧客id的集合]。選取出所有顧客的訂單信息,再塞入每個(gè)顧客的orders屬性中。那么在foreach里調(diào)用orders屬性時(shí),不會(huì)再執(zhí)行select語句。 $customers = Customer::find()->with('orders')->all();//選取出所有的顧客,然后顧客里的orders屬性給填上值 foreach($customers as $customer){ $orders = $customer->orders;}
    查看全部
  • //數(shù)據(jù)模型之關(guān)聯(lián)查詢性能問題 //1.關(guān)聯(lián)查詢結(jié)果緩存 /*$customer = Customer::find()->where(['name'=>'wangdachui'])->one(); $orders = $customer->orders;//第1次使用wangdachui訂單數(shù)據(jù)時(shí),實(shí)際上執(zhí)行了select * from order where customer_id=... unset($customer->orders;);//如果更新了wangdachui的訂單數(shù)據(jù),還想從數(shù)據(jù)庫拿數(shù)據(jù),那么拿數(shù)據(jù)之前通過unset()方法把wangdachui對(duì)應(yīng)的訂單信息給釋放掉,之后再獲取orders的時(shí)候可以到數(shù)據(jù)庫拿數(shù)據(jù),也就是再執(zhí)行select語句 $orders2 = $customer->orders;//第2次從wangdachui訂單獲取orders屬性時(shí),不會(huì)再執(zhí)行select語句,因?yàn)榈?次已經(jīng)訪問了數(shù)據(jù)庫并把數(shù)據(jù)塞到了orders里,所以第2次直接從orders里拿數(shù)據(jù)就可以了。
    查看全部
  • HelloController.php //根據(jù)訂單查詢顧客的信息(一對(duì)一:hasOne) $order = Order::find()->where(['id'=>1])->one(); //$order->getCustomer()->one(); $customer = $order->customer;//直接調(diào)用customer屬性去幫助獲取顧客的信息 print_r($customer); Order.php namespace app\models; use yii\db\ActiveRecord; class Order extends ActiveRecord{ //根據(jù)訂單查詢顧客的信息 public function getCustomer(){ return $this->hasOne(Customer::className(),['id'=>'customer_id'])->asArray();//$this代表訂單,調(diào)用hasOne('顧客完整的活動(dòng)記錄的類名','顧客和訂單之間的對(duì)應(yīng)關(guān)系')方法。通過return把這段代碼的執(zhí)行結(jié)果返回出去。 } }
    查看全部
  • summary; conclusion; sum up; summarize
    查看全部
  • handle procedure/process treatment flowsheet
    查看全部
  • configuration www/basic/config/web.php
    查看全部
  • HelloController.php $customer = Customer::find()->where(['name'=>'wangdachui'])->one(); //在Customer活動(dòng)記錄當(dāng)中并沒定義orders屬性,按理說使用orders會(huì)返回一個(gè)空值,怎么會(huì)返回$orders訂單數(shù)據(jù)呢?原因是當(dāng)訪問$customer對(duì)象(Customer活動(dòng)記錄的實(shí)例)里不存在的屬性時(shí),PHP會(huì)去調(diào)用__get()函數(shù); //__get()函數(shù)在活動(dòng)記錄里會(huì)去自動(dòng)調(diào)用一個(gè)(get+屬性名字)的方法,也就是getOrders(),調(diào)用完之后__get()函數(shù)會(huì)在后面自動(dòng)補(bǔ)上一個(gè)all()方法。把通過all()方法抓取的數(shù)據(jù)返回給$orders變量。這個(gè)自動(dòng)補(bǔ)上的all()方法會(huì)與Customer.php里getOrders()函數(shù)的all()[刪掉這個(gè)all()]方法沖突。 $orders = $customer->orders;//優(yōu)化:Yii框架允許通過屬性的方式直接獲取訂單數(shù)據(jù)。 print_r($orders); Customer.php public function getOrders(){ $orders = $this->hasMany(Order::className(),['customer_id'=>'id'])->asArray();//優(yōu)化的$orsers,刪掉all()。 return $orders;//獲取了訂單數(shù)據(jù)之后再返回出去 }
    查看全部
  • configuration
    查看全部
  • cookiesValidationKey security key
    查看全部
  • HelloController.php use app\models\Customer; use app\models\Order; //數(shù)據(jù)模型之關(guān)聯(lián)查詢 //根據(jù)顧客查詢他/她的訂單的信息 $customer = Customer::find()->where(['name'=>'wangdachui'])->one();//one()方法直接把wangdachui以對(duì)象的形式返回,通過$customer變量(實(shí)際上是Customer類的一個(gè)實(shí)例)來接收 //$orders = $customer->hasMany('app\models\Order',['customer_id'=>'id'])->asArray()->all();//專門的關(guān)聯(lián)查詢的方法hasMany('訂單的活動(dòng)記錄類全稱','訂單和顧客之間的關(guān)聯(lián)關(guān)系') //改進(jìn)點(diǎn)1:'app\models\Order'訂單的活動(dòng)記錄類可以通過調(diào)用Order里的className()靜態(tài)方法(從ActiveRecord父類里獲取的)來獲取。 //$orders = $customer->hasMany(Order::className(),['customer_id'=>'id'])->asArray()->all(); //改進(jìn)點(diǎn)2:把獲取訂單的這個(gè)邏輯通過getOrders()方法封裝起來,因?yàn)橛唵潍@取的邏輯涉及到表的一些信息,一旦數(shù)據(jù)庫表信息發(fā)生修改,那么會(huì)影響到控制器也做出相應(yīng)的修改(這段邏輯代碼)。也就導(dǎo)致了控制器和這個(gè)數(shù)據(jù)模型產(chǎn)生了一定的耦合。 //$orders = $customer->getOrders();//$customer對(duì)象是Customer類的實(shí)例,所以直接調(diào)用getOrders()函數(shù)。 print_r($orders); Customer.php //專門寫一個(gè)函數(shù)幫助顧客獲取訂單信息 public function getOrders(){ $orders = $this->hasMany(Order::className(),['customer_id'=>'id'])->asArray()->all();//$this代表當(dāng)前實(shí)例化出來的顧客 return $orders;//獲取了訂單數(shù)據(jù)之后再返回出去 }
    查看全部
  • 入口腳本 web/index.php
    查看全部
  • requirements.php 檢測(cè)系統(tǒng)環(huán)境
    查看全部
  • foundation infrastructure
    查看全部
  • //數(shù)據(jù)模型之單表數(shù)據(jù)修改 //修改數(shù)據(jù);all()方法返回的是一個(gè)數(shù)組,數(shù)組里有一個(gè)id=4的元素,它被轉(zhuǎn)化為了對(duì)象。通過one()快捷方法得到數(shù)組里的一個(gè)元素。 $test = Test::find()->where(['id'=>4])->one();//通過one()方法把得到的id=4的數(shù)據(jù)轉(zhuǎn)化成對(duì)象放進(jìn)$test中 $test->title = 'title4';//要修改$test里對(duì)應(yīng)的值的話直接修改$test里屬性的值就可以了 $test->save();
    查看全部

舉報(bào)

0/150
提交
取消
課程須知
學(xué)習(xí)本門課程之前,建議先了解一下知識(shí),會(huì)更有助于理解和掌握本門課程 1、掌握PHP基本的語言語法 2、對(duì)MVC開發(fā)方式有一定的了解
老師告訴你能學(xué)到什么?
1、php的新特征 2、一款前沿的框架的使用方式 3、新穎獨(dú)到的程序設(shè)計(jì)

微信掃碼,參與3人拼團(tuán)

微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

友情提示:

您好,此課程屬于遷移課程,您已購買該課程,無需重復(fù)購買,感謝您對(duì)慕課網(wǎng)的支持!