我有以下代码
$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()函数有什么问题?
谢谢
答案 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;