Php 将MySQL查询转换为Yii CDbCriteria
我有两张桌子,名字是Php 将MySQL查询转换为Yii CDbCriteria,php,mysql,yii,Php,Mysql,Yii,我有两张桌子,名字是 新建\u tbl\u主\u站点ID->模型:站点ID app_tbl_ict_dapot_发电机组->型号:发电机组 我有一个像这样的mysql查询 SELECT A.siteid, B.type, B.status_operations, B.status FROM new_tbl_master_siteid as A LEFT JOIN app_tbl_ict_dapot_genset as B ON A.siteid = B.siteid 我想在此处左键加入site
SELECT A.siteid, B.type, B.status_operations, B.status
FROM new_tbl_master_siteid as A
LEFT JOIN app_tbl_ict_dapot_genset as B
ON A.siteid = B.siteid
我想在此处左键加入siteid列
我正在考虑修改发电机组模型上的CdbCriteria,如何才能使发电机组gridview的数据提供程序也可以使用SiteID模型中的列
发电机组型号标准
$criteria=new CDbCriteria;
$criteria->compare('id',$this->id);
$criteria->compare('siteid',$this->siteid,true);
$criteria->compare('merk',$this->merk,true);
$criteria->compare('type',$this->type,true);
$criteria->compare('capacity',$this->capacity,true);
$criteria->compare('kapasitas_tangki',$this->kapasitas_tangki,true);
$criteria->compare('status',$this->status,true);
$criteria->compare('status_operations',$this->status_operations,true);
return new CActiveDataProvider($this, array(
'criteria'=>$criteria,
==================
这是下面的关系
class genset extends CActiveRecord
.....
public function relations()
{
// NOTE: you may need to adjust the relation name and the related
// class name for the relations automatically generated below.
return array(
'siteids'=>array(self::BELONGS_TO,'SiteID','siteid'),
);
}
....
public function search()
{
// @todo Please modify the following code to remove attributes that should not be searched.
$criteria=new CDbCriteria;
$criteria->compare('id',$this->id);
$criteria->compare('siteid',$this->siteid,true);
$criteria->compare('merk',$this->merk,true);
$criteria->compare('type',$this->type,true);
$criteria->compare('capacity',$this->capacity,true);
$criteria->compare('kapasitas_tangki',$this->kapasitas_tangki,true);
$criteria->compare('status',$this->status,true);
$criteria->compare('status_operations',$this->status_operations,true);
$criteria->with = array('siteids.rtp');
$criteria->compare('siteids.rtp',$this->rtp,true);
return new CActiveDataProvider($this, array(
'criteria'=>$criteria,
));
}
和siteid类
class SiteID extends CActiveRecord
.....
public function relations()
{
// NOTE: you may need to adjust the relation name and the related
// class name for the relations automatically generated below.
return array(
'gensets'=>array(self::HAS_MANY, 'genset', 'siteid'),
);
}
但我犯了个错误
Relation "rtp" is not defined in active record class "SiteID".
rtp是siteid模型中的一个列Yii实现这一点的方法是通过关系,例如,您应该将关联表的关系添加到您的模型中(如果它还没有),然后您可以直接访问相关模型的属性,例如,如果siteid对象是$model,而关系的名称是“genset”,您可以像这样获得发电机组的状态:$model->genset->status您要做的第一件事是创建可以像这样完成的模型之间的关系:
public function relations()
{
return array(
'genset'=>array(self::HAS_MANY, 'genset', 'siteid'),
);
}
在模范班。在两个模型中定义关系后,使用->with
$criteria->with = array('genset');
你准备好出发了。但要确保在两个模型中都定义了关系。你能给我举个例子吗?我试图将状态解析到gridview中,gridview将其称为“dataProvider”=>$model->search(),提供两个表之间的关系,是否是一对多、多对多等?