zap*_*dlo 4 custom-attributes yii
有没有向模型添加自定义字段的简单方法?假设我有一个包含3个字段的表"user":id,name和surname.我要这个:
$user = User::model()->findByPk(1);
$echo $user->fullName; // echoes name and surname
Run Code Online (Sandbox Code Playgroud)
请注意:我希望通过sql添加此自定义字段,如同
$c = new CDbCriteria();
$c->select = 'CONCAT("user".name, "user".surname) as fullName';
$user = User::model()->find($c);
Run Code Online (Sandbox Code Playgroud)
问题是没有设置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>';
}
Run Code Online (Sandbox Code Playgroud)
小智 9
您可以向User类添加一个函数:
public function getFullName() { return $this->name.' '.$this->surname; }
Run Code Online (Sandbox Code Playgroud)
这将返回全名,就好像它是数据库中的属性一样.这比向SQL添加计算列要容易得多.