Как читать CakePHP Model, используя определенные поля? - PullRequest
0 голосов
/ 29 ноября 2010

Я новичок в CakePHP и застрял в чтении модели с использованием других полей.Я сделал команду на торт, чтобы сгенерировать простой пользовательский CRUD.Я могу просматривать пользователя, используя URL-адрес, предоставленный CakePHP.

/users/view/1

Я могу просматривать пользователя, используя id = 1. Что если я хочу просмотреть пользователя по имени вместо id?

По умолчанию функция просмотра считывает модель пользователя по идентификатору.

$this->User->read(null, $id)

Спасибо.

Ответы [ 3 ]

1 голос
/ 29 ноября 2010

вы можете использовать find функцию или findBy<Field>() в вашем случае findByUsername()

отметьте это

0 голосов
/ 29 ноября 2010

Кажется, что CakePHP сосредоточен на устаревании некоторых функций, таких как findAll().Возможно, скоро магические методы, такие как findBy<field>(), постигнет та же участь.

Я могу порекомендовать то, что предлагает martswite, вы должны создать свою собственную функцию:

function findUser($username=''){
    return $this->find('first', array(
        'conditions' => array(
            'User.username' => $username
        )
    ));
}

Возможно, у вас естьstatus поле, возможно профиль не является общедоступным, вы можете добавить условие:

function findUser($username=''){
    return $this->find('first', array(
        'conditions' => array(
            'User.username' => $username,
            'User.status' => 1
        )
    ));
}

Я думаю, что это более модульно, чем findBy<Field>.

0 голосов
/ 29 ноября 2010

Я никогда не использовал сам тортPHP, но я собираюсь предположить, что вам, вероятно, придется реализовать новый метод пользовательской модели, что-то вроде getUserByUsername ($ username). Это, в свою очередь, будет взаимодействовать с вашим DAL, который получитсведения об этом пользователе, основанные на имени пользователя и возвращающие пользовательский объект, который можно использовать по вашему желанию ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...