Php 我加入两个模型
我有两个mysql表: 1.价格 2.细节 表格价格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
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您能帮助我吗?我也有同样的问题,我在模型中定义了关系,但未能使用外键关系在表单中显示值