【发布时间】:2012-02-03 19:25:47
【问题描述】:
有向模型添加自定义字段的简单方法吗?假设我有一个包含 3 个字段的表“用户”:id、name 和 surname。我想要这个:
$user = User::model()->findByPk(1);
$echo $user->fullName; // echoes name and surname
请注意:我希望通过 sql 添加这个自定义字段,smth like
$c = new CDbCriteria();
$c->select = 'CONCAT("user".name, "user".surname) as fullName';
$user = User::model()->find($c);
问题是未设置 fullName 属性。
UPD:
这里是一个有点棘手的问题的代码——来自另一个表的自定义字段。这样做是这样的:
$model = Application::model();
$model->getMetaData()->columns = array_merge($model->getMetaData()->columns, array('fullName' => 'CONCAT("u".name, "u".surname)'));
$c = new CDbCriteria();
$c->select = 'CONCAT("u".name, "u".surname) as fullName';
$c->join = ' left join "user" "u" on "t".responsible_manager_id = "u".id';
$model->getDbCriteria()->mergeWith($c);
foreach ($model->findAll() as $o) {
echo '<pre>';
print_r($o->fullName);
echo '</pre>';
}
【问题讨论】:
-
虽然是相当老套的解决方案...我不认为手动更改元数据是好的风格。
标签: yii custom-attributes