dapeng 2012-08-31 09:51:22 3082次浏览 6条回复 0 0 0

控制器层的语句: system.db.CDbCommand.query(SELECT t.*,oa_department.name as bname FROM oa_staff t left join oa_department ON t.department=oa_department.id ORDER BY id DESC LIMIT 10) 视图:

<b><?php echo CHtml::encode($data->getAttributeLabel('department')); ?>:</b>
<?php
		 
    echo CHtml::encode($data->bname); ?>
<br />

报错:Property "Staff.bname" is not defined 求高手指点

  • 回复于 2012-08-31 11:42 举报

    一般controller中不要有SQL。这个最好放model中去。
    从提示来看,Staff Model未定义bname,而从SQL来看,bname是oa_department.name的别名。检查下是不是model的问题。

    另外,你的SQL是FROM子句只,oa_staff和t之间,是什么?

  • 回复于 2012-08-31 13:22 举报
    public function actionIndex()
    {
    $criteria=new CDbCriteria;
    $criteria->select="t.*,oa_department.name as bname";
    //$criteria->condition="id=:id";
    //$criteria->params+=array(':id'=>5);//查询条件
    $criteria->join="left join oa_department ON t.department=oa_department.id";
    $criteria->order='id DESC';
    
    $dataProvider=new CActiveDataProvider('Staff',array(
    	'criteria'=>$criteria,
     )
     
    );
    
    $this->render('index',array(
    	'dataProvider'=>$dataProvider,
    ));
    		
    }
    

    这是我构造的sql语句 我上面的语句是从这里出来的 不知道问题在哪里

  • 回复于 2012-08-31 14:39 举报

    Staff model有bname成员么?把Staff贴出来看看

  • 回复于 2012-08-31 15:49 举报

    没有 我一直在纠结这个问题

  • 回复于 2012-08-31 16:46 举报

    汗~
    没有你还纠结什么?没有就加上呀。人都报错说bname未定义了,你还不加,还纠结。

  • 回复于 2012-08-31 17:48 举报

    已经解决 建议用 model下的relation里面定义 很方便

您需要登录后才可以回复。登录 | 立即注册