Php 我加入两个模型

Php 我加入两个模型,php,mysql,yii,Php,Mysql,Yii,我有两个mysql表: 1.价格 2.细节 表格价格 ID | DATE | CODE | PRICE 1 |2014-01-01 | AAA1 | 90.123 2 |2014-01-01 | AAB1 | 50.113 3 |2014-01-01 | AAC1 | 48.621 4 |2014-01-02 | AAA1 | 91.123 5 |2014-01-02 | AAB1 | 51.113 6 |2014-01-02 | AAC1 | 41.621

我有两个mysql表: 1.价格 2.细节

表格价格

ID  |  DATE     | CODE |  PRICE
1   |2014-01-01 | AAA1 | 90.123
2   |2014-01-01 | AAB1 | 50.113
3   |2014-01-01 | AAC1 | 48.621
4   |2014-01-02 | AAA1 | 91.123
5   |2014-01-02 | AAB1 | 51.113
6   |2014-01-02 | AAC1 | 41.621
CODE | NAME   | DESCRIPTION
AAA1 | andria | A very good...
AAB1 | anasta | A very good...
AAC1 | simple | A very good...
public function relations(){
        return array(
            'code' => array(self::BELONGS_TO, 'details', 'code'),
        );
    }
public function relations(){
        return array(
            'code' => array(self::HAS_MANY, 'prices', 'code'),
        );
    }
public function relations(){
        return array(
            'details' => array(self::BELONGS_TO, 'Stocks_details', 'code'),
        );
    }
表格详细信息

ID  |  DATE     | CODE |  PRICE
1   |2014-01-01 | AAA1 | 90.123
2   |2014-01-01 | AAB1 | 50.113
3   |2014-01-01 | AAC1 | 48.621
4   |2014-01-02 | AAA1 | 91.123
5   |2014-01-02 | AAB1 | 51.113
6   |2014-01-02 | AAC1 | 41.621
CODE | NAME   | DESCRIPTION
AAA1 | andria | A very good...
AAB1 | anasta | A very good...
AAC1 | simple | A very good...
public function relations(){
        return array(
            'code' => array(self::BELONGS_TO, 'details', 'code'),
        );
    }
public function relations(){
        return array(
            'code' => array(self::HAS_MANY, 'prices', 'code'),
        );
    }
public function relations(){
        return array(
            'details' => array(self::BELONGS_TO, 'Stocks_details', 'code'),
        );
    }
型号:

<?php 
    $this->widget('bootstrap.widgets.TbGridView', array(
    'dataProvider'=>$prices,
    'template'=>"{items}",
    'enablePagination' => false,
    'columns'=>array(
        array('name'=>'code', 'header'=>'Code'),
        array('name'=>'name', 'header'=>'Name'),
        array('name'=>'close', 'header'=>'Close'),
    ),
)); ?>
价格

ID  |  DATE     | CODE |  PRICE
1   |2014-01-01 | AAA1 | 90.123
2   |2014-01-01 | AAB1 | 50.113
3   |2014-01-01 | AAC1 | 48.621
4   |2014-01-02 | AAA1 | 91.123
5   |2014-01-02 | AAB1 | 51.113
6   |2014-01-02 | AAC1 | 41.621
CODE | NAME   | DESCRIPTION
AAA1 | andria | A very good...
AAB1 | anasta | A very good...
AAC1 | simple | A very good...
public function relations(){
        return array(
            'code' => array(self::BELONGS_TO, 'details', 'code'),
        );
    }
public function relations(){
        return array(
            'code' => array(self::HAS_MANY, 'prices', 'code'),
        );
    }
public function relations(){
        return array(
            'details' => array(self::BELONGS_TO, 'Stocks_details', 'code'),
        );
    }
详细信息

ID  |  DATE     | CODE |  PRICE
1   |2014-01-01 | AAA1 | 90.123
2   |2014-01-01 | AAB1 | 50.113
3   |2014-01-01 | AAC1 | 48.621
4   |2014-01-02 | AAA1 | 91.123
5   |2014-01-02 | AAB1 | 51.113
6   |2014-01-02 | AAC1 | 41.621
CODE | NAME   | DESCRIPTION
AAA1 | andria | A very good...
AAB1 | anasta | A very good...
AAC1 | simple | A very good...
public function relations(){
        return array(
            'code' => array(self::BELONGS_TO, 'details', 'code'),
        );
    }
public function relations(){
        return array(
            'code' => array(self::HAS_MANY, 'prices', 'code'),
        );
    }
public function relations(){
        return array(
            'details' => array(self::BELONGS_TO, 'Stocks_details', 'code'),
        );
    }
下面是我要执行的SQL代码:

SELECT * FROM prices a 
JOIN (SELECT * FROM details) b
WHERE a.DATE=(SELECT MAX(DATE) FROM prices) AND a.code = b.code
我的控制器:

$prices=new CActiveDataProvider('prices', array(
                'criteria'=>new CDbCriteria (array(
                    'select'=>'code,date,close',
                    'condition'=>'date=(SELECT MAX(date) FROM prices)'
                )),
            ));

$this->render('index',array(
                'prices'=>$prices
            ));
index.php:

<?php 
    $this->widget('bootstrap.widgets.TbGridView', array(
    'dataProvider'=>$prices,
    'template'=>"{items}",
    'enablePagination' => false,
    'columns'=>array(
        array('name'=>'code', 'header'=>'Code'),
        array('name'=>'name', 'header'=>'Name'),
        array('name'=>'close', 'header'=>'Close'),
    ),
)); ?>


使用此控制器命令,我可以从表价格中获取数据,但无法从表详细信息中获取数据。

查看带有部分标准的

我认为您的代码应该是这样的(未经测试):


您在模型中已经有了可靠性。所以在控制器中执行类似的查询

$prices=new CActiveDataProvider('prices', array(
        'criteria'=>new CDbCriteria (array(
            'condition'=>'date=(SELECT MAX(date) FROM prices)'
        )),
    ));
鉴于此,请使用

$data->code->name
$data->code->description
以下是我要更改的内容:

index.php

<?php 
    $this->widget('bootstrap.widgets.TbGridView', array(
    'dataProvider'=>$prices,
    'template'=>"{items}",
    'enablePagination' => false,
    'columns'=>array(
        array('name'=>'code', 'header'=>'Code'),
        array('name'=>'name', 'header'=>'Name', 'value'=>'$data->details->name'),
        array('name'=>'close', 'header'=>'Close'),
    ),
)); ?>

活动记录类“价格”中未定义关系“详细信息”。知道哪里出了问题吗?不知道,但是你当然可以自己添加关系。如果我使用你的代码,我可以(从价格表中)而不是从详细信息表中获取代码、价格和日期。名称只是变成了一个空列。在您的模型中,依赖关系必须是这样的
returnarray('code'=>array(self::belishing_TO,'Prices','code')你说的是哪种型号?价格还是细节?您可以从上面看到我的模型关系。@user3054630您能帮助我吗?我也有同样的问题,我在模型中定义了关系,但未能使用外键关系在表单中显示值