class AmsPriceNewcar extends AmcPriceNewcar
{
public $mileage;
public function relations()
{
return array(
'm' => array(self::BELONGS_TO, 'AmcModelInfo', '' , 'on'=>' t.mid=m.mid'),
'ps' => array(self::BELONGS_TO, 'AmcSeriseParent', 'pserid'),
'b' => array(self::BELONGS_TO, 'AmcBrand', 'bid')
);
}
public function searchMaintain()
{
$criteria=new CDbCriteria;
//直接关联上面的relations
<pre name="code" class="html"> $criteria->with = array('m');
$criteria->join = 'JOIN gocar_mileage AS Mil ON t.pserid=Mil.pserid'; $criteria->select = 't.pserid,mileage,t.bid'; $criteria->group = 't.pserid'; $criteria->order = 't.pserid DESC'; return new CActiveDataProvider($this, array( 'criteria'=>$criteria, )); }
1、这里遇到的问题,用了$criteria->join方法,查询报错,原因是gocar_mileage表与主表中有字段名相同,于是用了$criteria->select来查找要显示的字段避开。
2、在视图层显示的时候,发现mileage字段报错,要在该类中定义 public $mileage;才能调用
3、relations中的b在views失效,但是没有报错,原理是$criteria->select没加上管理的t.bid(因为一开始显示数据不需要bid,但是relations调用到,所有要带上)
4、relations中不是主键去关联的时候的写法
'm' => array(self::BELONGS_TO, 'AmcModelInfo', '' , 'on'=>' t.mid=m.mid'),