2013-09-08 3 views
1

В моем старом проекте я использовал long id для первичного ключа таблицы, например «shop_id» или «order_id», но теперь я хочу использовать только «id» в качестве псевдонима для «shop_id». Как добавить это только к классу модели, а не изменять таблицы. После того, что я хотел бы иметь что-то вроде этогоКак добавить псевдоним столбца в динамическую модель yii?

$model->id = $var 

или

$var = $model->id 

и

$var = $model->attributes['id']. 

ответ

0

просто создать метод получения в вашей модели кода, как это:

public function getId(){ 
    return $this->shop_id 
} 

Если у вас есть это на многих таблицах, y ou может расширить CActiveRecord и добавить геттер в этот класс следующим образом:

public function getId(){ 
    return $this->{$this->tableSchema->primaryKey}; 
} 
+0

Нет, я сделал это, конечно. Но в этом случае мы можем просто получить или установить данные - $ model-> alias_column. Но !! как насчет методов find()? Я вижу, что нам приходится перегружать некоторые методы CActiveFider/связанные с схемой/ –

+0

. Ahh, я вижу - это не вопрос, который вы задали, однако вы спросили, как использовать переменную non table в этой форме: '$ var = $ model- > id'. В Yii вам придется перегружать довольно много методов, так как нет ни одного места, которое создает запросы - это довольно запутанный процесс. –

+0

Спасибо, я вижу, что лучший способ - использовать возможности базы данных PostgreSQL (система правил). –