真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

使用yii框架怎么實現(xiàn)數(shù)據(jù)庫關(guān)聯(lián)查詢-創(chuàng)新互聯(lián)

這篇文章給大家介紹使用yii框架怎么實現(xiàn)數(shù)據(jù)庫關(guān)聯(lián)查詢,內(nèi)容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

創(chuàng)新互聯(lián)公司制作網(wǎng)站網(wǎng)頁找三站合一網(wǎng)站制作公司,專注于網(wǎng)頁設(shè)計,成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè),網(wǎng)站設(shè)計,企業(yè)網(wǎng)站搭建,網(wǎng)站開發(fā),建網(wǎng)站業(yè)務,680元做網(wǎng)站,已為千余家服務,創(chuàng)新互聯(lián)公司網(wǎng)站建設(shè)將一如既往的為我們的客戶提供最優(yōu)質(zhì)的網(wǎng)站建設(shè)、網(wǎng)絡(luò)營銷推廣服務!

具體如下:

where(['name'=>'zhangsan'])->one();
    $orders = $customer->hasMany('app\models\Order',['customer_id'=>'id'])->asArray()->all();
    print_r($orders);
  }
}
?>

上邊的控制器方法查詢,Customer模型沒有具體方法。

上邊的 app\models\Order 可以改進為Order::className(),并且上邊要添加use app\models\Order;

方式二:(使用model方法)

customer模型代碼:

hasMany(Order::className(),['customer_id'=>'id'])->asArray()->all();
  }
}

控制器代碼:

namespace app\controllers;
use yii\web\Controller;
use app\models\Customer;
class CustomerController extends Controller{
  //根據(jù)顧客名字查詢出所有的訂單信息
  public function actionIndex(){
    $customer = Customer::find()->where(['name'=>'zhangsan'])->one();
    $orders = $customer->getOrders();
    print_r($orders);
  }
}

方法三:(調(diào)用模型的屬性查詢)

customer模型代碼:

namespace app\models;
use yii\db\ActiveRecord;
class Customer extends ActiveRecord{
  public function getOrders(){
    return $this->hasMany(Order::className(),['customer_id'=>'id'])->asArray();
  }
}

控制器代碼:

namespace app\controllers;
use yii\web\Controller;
use app\models\Customer;
class CustomerController extends Controller{
  //根據(jù)顧客名字查詢出所有的訂單信息
  public function actionIndex(){
    $customer = Customer::find()->where(['name'=>'zhangsan'])->one();
    $orders = $customer->orders;
    //說明,當調(diào)用一個不存在的屬性時,
    //php會去調(diào)用一個__get()的方法,
    //__get()的方法會自動調(diào)用一個get+屬性的方法,即getOrders()
    //并且會再查詢時自動補上->all()或->one()方法,根據(jù)模型查詢的hasMany或hasOne決定的
    print_r($orders);
  }
}

根據(jù)訂單id獲取對應的顧客信息:

模型代碼:

namespace app\models;
use yii\db\ActiveRecord;
class Order extends ActiveRecord{
  //根據(jù)訂單id獲取顧客信息
  public function getCustomer(){
    return $this->hasOne(Customer::className(),['id'=>'customer_id'])->asArray();
  }
}

控制器代碼:

namespace app\controllers;
use yii\web\Controller;
use app\models\Order;
class CustomerController extends Controller{
  //根據(jù)訂單查詢用戶信息
  public function actionIndex(){
    $orders = Order::find()->where(['id'=>2])->one();
    $customer = $orders->customer;
    print_r($customer);
  }
}

以上代碼中的$orders->customer會記錄緩存,如果要刪除緩存,可以使用unset($orders->customer)。

關(guān)聯(lián)查詢的多次查詢

$customers = Customer::find()->all();
foreach($customers as $customer){
  $orders = $customer->orders;
}

這樣如果有100條數(shù)據(jù),就總共需要查詢101次。

優(yōu)化:

$customers = Customer::find()->with('orders')->all();
foreach($customers as $customer){
  $orders = $customer->orders;
}

關(guān)于使用yii框架怎么實現(xiàn)數(shù)據(jù)庫關(guān)聯(lián)查詢就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。


本文標題:使用yii框架怎么實現(xiàn)數(shù)據(jù)庫關(guān)聯(lián)查詢-創(chuàng)新互聯(lián)
文章地址:http://weahome.cn/article/gdjcs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部