Yii获取model() - > findAll()结果但不是model() - > find()

时间:2014-09-09 06:51:40

标签: yii

我有以下代码

    $result = Department::model()->findAll('department_id=:department_id', array(':department_id'=>1));         
    $departments = chtml::listdata($result,'department_id', 'department_name');

并返回正确的结果。我知道我们可以使用函数find()来获得单个结果但是当我尝试下面的代码时返回结果是NULL

    $result = Department::model()->find('department_id=:department_id', array(':department_id'=>1));            
    $departments = chtml::listdata($result,'department_id', 'department_name');

find()函数有什么问题?

谢谢

2 个答案:

答案 0 :(得分:0)

如果您想通过ID进行单一记录,请尝试

$result = Department::model()->findByPk($department_id, array(':department_id'=>1)); 

这将给你一个给定id的记录。

答案 1 :(得分:0)

CHtml::listData()期望第一个参数的数组。 findAll()方法返回Department个对象的数组,这就是它按预期工作的原因。但是,find()仅返回单个Department对象。

如果要强制listData()方法使用find()的结果,则需要先将结果包装在数组中。

$result = Department::model()->find('department_id=:department_id', array(':department_id'=>1));            
$departments = chtml::listdata(array($result),'department_id', 'department_name');

当然,根本不需要使用listData(),但这取决于您实际要完成的任务。您还可以按如下方式访问值:

$result = Department::model()->find('department_id=:department_id', array(':department_id'=>1));
echo $result->department_id;
echo $result->department_name;