先看数据表中的关系是怎样的:

customer表中的关系如下:

order中的表为:

先在customer中获得order的数据,并与之关联,在 helloController.php 中,代码如下

 <?php
namespace app\controllers;
use yii\web\Controller;
use app\models\Customer;
use app\models\Order; class HelloController extends Controller {
public function actionIndex()
{
$customer = Customer::find()->where(['name'=>'zhangsan'])->one();
// $orders=$customer->getOrders();//getOrders()是在cunstomer.php中的函数,与下面代码效果一致
$orders = $customer->orders;//只用orders而不声明getOrders()是因为程序会自动使用__get()方法,调用Customer.php中的getOrders()方法。
print_r($orders);
}
}

在 app\models\Customer.php 中的代码为:

 <?php
namespace app\models; use yii\db\ActiveRecord;
class Customer extends ActiveRecord{
public function getOrders(){
$orders = $this->hasMany(Order::className(),['customer_id'=>'id'])->asArray();//Order::className()等同于'app\madels\Order'是使用Order.php下面的方法,其中'customer_id'='id'中的id是customer表中id,而不是order表中的id
return $orders;
}
}

在 app\models\Order.php 中的代码为:

 <?php
namespace app\models; use yii\db\ActiveRecord;
class Order extends ActiveRecord{ }

程序打印出的效果如图:

然后在order中获得customer中的数据,再与之关联。

helloController中的代码为:

 <?php
namespace app\controllers;
use yii\web\Controller;
use app\models\Customer;
use app\models\Order; class HelloController extends Controller {
public function actionIndex()
{
$order = Order::find()->where(['id'=>1])->one();
$customer = $order->customer;
print_r($customer);
}
}

order.php中的代码:

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

然后在customer.php中的代码为:

 <?php
namespace app\models; use yii\db\ActiveRecord;
class Customer extends ActiveRecord{ }

效果图为:

YII的关联查询的更多相关文章

  1. yii 之数据库关联查询

    <?php namespace app\controllers; use yii\web\Controller; use app\models\Customer; class CustomerC ...

  2. YII关联查询

    原文链接:http://keshion.iteye.com/blog/1607994 一.多表关联的配置 在我们使用 AR 执行关联查询之前,我们需要让 AR 知道一个 AR 类是怎样关联到另一个的. ...

  3. Yii关联查询(转载)

    原文链接:http://keshion.iteye.com/blog/1607994 一.多表关联的配置 在我们使用 AR 执行关联查询之前,我们需要让 AR 知道一个 AR 类是怎样关联到另一个的. ...

  4. yii2中关联查询

    yii2 ActiveRecord多表关联以及多表关联搜索的实现 一个老生常谈的问题.最近通过群里的反馈,觉得很多人还是没有去理解这个问题.今天把这个问题讲明白了,看看yii2 ActiveRecor ...

  5. Yii2中多表关联查询

    准备条件: 1.首先准备两张表: customer(用户表)(id, name) order(订单表)(id, customer_id, price) customer 表和 order 表之间是一对 ...

  6. Yii Ar model 查询

    Ar model 查询 参照表: CREATE TABLE tbl_user ( id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT, username VA ...

  7. JDBC MySQL 多表关联查询查询

    public static void main(String[] args) throws Exception{ Class.forName("com.mysql.jdbc.Driver&q ...

  8. MYSQL基础操作之数据约束与关联查询

    一.MYSQL约束 1.默认值约束,当字段没有插入值的时候,mysql自动给该字段分配默认值. 默认值的字段允许为空. 对默认值字段也可以插入null. CREATE TABLE STUDENT( I ...

  9. C#代码中实现两个表(DataTable)的关联查询(JOIN)

    之前通常都是使用SQL直接从数据库中取出表1和表2关联查询后的数据,只需要用一个JOIN就可以了,非常方便.近日遇到一种情况,两个表中的数据已经取到代码中,需要在代码中将这两个表关联起来,并得到它们横 ...

随机推荐

  1. linux string 操作

    http://www.cnblogs.com/chengmo/archive/2010/10/02/1841355.html 字符替换 sed -i 's/3306/3308/g' my.cnf my ...

  2. POJ 3903:Stock Exchange(裸LIS + 二分优化)

    http://poj.org/problem?id=3903 Stock Exchange Time Limit: 1000MS   Memory Limit: 65536K Total Submis ...

  3. php的内存分配还是很智能的

    <?php echo memory_get_usage().PHP_EOL;$a = 1;$b = $a;echo memory_get_usage().PHP_EOL; <?php ec ...

  4. PMO到底什么样?

    PMO到底什么样? 当将来项目办理单位彻底健全了,达到最老练的程度的时分项目办理单位应当干哪些活,有哪些大块功能,也即是关于一个全部的PMO它的功能跟人物都包含啥? 下面这个模型精确的说是英国的项目办 ...

  5. javascript对象(1)

    Array对象 创建语法:new Array();new Array(size);new Array(element0,element,element3,……,elementn); 具有的属性:con ...

  6. SDUT 2603:Rescue The Princess

    Rescue The Princess Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 Several days ago, a b ...

  7. YTU 3007: 顺序串的基本运算

    3007: 顺序串的基本运算 时间限制: 1 Sec  内存限制: 128 MB 提交: 1  解决: 1 题目描述 编写一个程序,实现顺序串的各种基本运算,主函数已给出,请补充每一种方法. 1.建立 ...

  8. asp.net dropdownlist和listbox

    if (!IsPostBack) { //页面初次加载时执行这里的内容 DataSet ds = new DataSet(); //数据集 ds.Tables.Add("stu") ...

  9. 利用反射及jdbc元数据实现通用的查询方法

    ---------------------------------------------------------------------------------------------------- ...

  10. CountDownLatch、CyclicBarrier和Semaphore

    转载:http://www.cnblogs.com/dolphin0520/p/3920397.html 在java 1.5中,提供了一些非常有用的辅助类来帮助我们进行并发编程,比如CountDown ...