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

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. Dynamics AX 2012 R2 Service Middle Tier WCF WCF转发

    参考了蒋金楠老师08年的文章.好吧,那时候我才大二.大三,大神果然是大神. http://www.cnblogs.com/artech/archive/2008/09/01/1280939.html ...

  2. Linux命令学习手册-printf命令(转)

    分类: LINUX 参考资料:http://sns.linuxpk.com/space-566-do-blog-id-15819.html printf FORMAT [ARGUMENT]... pr ...

  3. C/C++的一些备忘

    今天使用source insight阅读videoserver源码,有一些符号ctrl+左键点击显示找不到,先是rebuild工程和同步,没有效果,然后Options->Preferences- ...

  4. 计算机学院大学生程序设计竞赛(2015’12)Polygon

    Polygon Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Su ...

  5. C#递归1~100的累加

    public static int Accum(int m, int n) { //对于接受的参数,要考虑m >n,m=n,m<n三种情况. if (m < n) { return ...

  6. uwsgi安装过程中遇到的问题

    参考这篇文章: [root@crz_oa webserver]# uwsgi --http :9090 --wsgi-file home.py --daemonize /var/log/uwsgi.l ...

  7. laravel框架总结(一) -- 请求和响应

    一.laravel请求 1.获取请求 1>获取请求的 URI path 方法会返回请求的 URI.所以,如果接收到的请求目标是 http://domain.com/foo/bar,那么 path ...

  8. ceil floor函数

    > a=6.4> b=math.ceil(a)> print(b)7> c=math.floor(a)> print(c)6 ceil向上取整 floor向下取整

  9. 《将博客搬至CSDN》的文章,

    <将博客搬至CSDN>的文章,并将文章地址填写在上方的"搬家通知博文地址"中.)

  10. 实现Action类

    实现Action类 1.Action类的作用: (1)封装HTTP的请求参数: (2)处理用户请求: (3)封装处理结果. 2.Action类是什么,在Action类中应该包含什么: Action类就 ...