Если вы уже до этого получали все данные пользователя из БД, то лучше просто возвращать эти данные из свойств UserController. Да, метод отдельный не помешает, но не обязательно генерировать запрос к БД.
Например, если вы уже подгружали пользовательские данные раньше и сохраняли их куда-нибудь вроде $this->_model:
class UserController extends Controller {
var $_model;
public function loadModel($id) {
$this->_model = User::model()->findByPk($id);
// ...
return $this->_model;
}
// ...
public function getBirthday($id) {
if (isset($this->_model->date) && $this->_model->user_id == $id) {
return $this->_model->date;
} else {
$criteria = new CDbCriteria;
$criteria->select = 'date';
$data = User::model()->findById($id,$criteria);
return $data !== null $data->date : null;
}
}
// ...
}
Новый запрос к БД нужно составлять только в том случае, когда, например, вам нужно получить все комментарии конкретного пользователя из этого контроллера, потому что в такой ситуации потребуется новая размерность и новый запрос к БД. А для получения отдельных полей из одной записи лучше один раз получить все данные, хранить их в свойстве контроллера, а потом просто возвращать из памяти, а не генерировать каждый раз новый запрос к БД.
Ваш подход, в принципе, не особенно сильно повлияет на работу сайта — подумаешь, один лишний запрос к БД. Но, вообще, такой подход — неправильный. Тут один лишний запрос, там один лишний запрос. Они в итоге собираются в кучу лишнего потребления ресурсов.