Для чего используется псевдоним модели CakePHP?

В пользовательской модели:

var $hasMany = array(
        'Photo' => array(
            'className' => 'Photo',
            'foreignKey' => 'owner_id',
            ...
        ),
);

В фотомодели:

var $belongsTo = array(
        'Owner' => array(
            'className' => 'User',
            'foreignKey' => 'owner_id',
            ...
            ),
);

Здесь у одного пользователя много фотографий. Так что мой вопрос в том, что здесь псевдоним - "Владелец", который позволяет мне понять точное значение "Пользователь", но является ли это единственной причиной использования псевдонима? это влияет на "Фото" в пользовательской модели? или как использовать "Владелец" в /cakephp?

Я не совсем понимаю значение псевдонима в модели. Цените свою помощь!

Ответ 1

Два полезных сценария для псевдонимов:

1. Несколько внешних ключей к одной и той же модели

Например, ваша таблица photos имеет два поля: created_user_id и modified_user_id

var $belongsTo = array(
    'CreatedUser' => array(
        'className' => 'User',
        'foreignKey' => 'created_user_id',
        ...
    ),
    'ModifiedUser' => array(
        'className' => 'User',
        'foreignKey' => 'modified_user_id',
        ...
    ),
);

2. Создание логических слов, специфичных для вашего домена приложения

Используя поле условий в массиве, вы можете указать разные типы моделей:

var $hasMany = array(
    'ApprovedUser' => array(
        'className' => 'User',
        'foreignKey' => 'group_id',
        'conditions' => array(
            'User.approved' => 1,
            'User.deleted'  => 0
        ),
        ...
    ),
    'UnapprovedUser' => array(
        'className' => 'User',
        'foreignKey' => 'group_id',
        'conditions' => array(
            'User.approved' => 0,
            'User.deleted'  => 0
        ),
        ...
    ),
    'DeletedUser' => array(
        'className' => 'User',
        'foreignKey' => 'group_id',
        'conditions' => array('User.deleted'  => 1),
        ...
    ),
);

В приведенном выше примере модель Группы имеет разные типы пользователей (одобренные, неутвержденные и удаленные). Использование псевдонимов помогает сделать ваш код очень элегантным.

Ответ 2

Он позволяет вам делать такие вещи, как $this->Owner->read(null,$userId); У вас может быть OwnersController и views/owner.

Это... псевдоним. В некотором смысле, Пользователь является псевдонимом для пользователей таблицы db.

Лучший пример: у меня есть CMS, где я использую статьи таблицы для статьи, BlogItem и News. Эти три имени - это псевдонимы для одной таблицы, которые позволяют мне устанавливать разные модели, отношения и поведение. Поэтому у меня есть BlogItemsController и NewsController, а также ArticleController.