2014-10-22 3 views

ответ

2

Торт делает это внутренне, если вы не укажете его на основе имени класса.

Однако это приводит к хорошей ловушке: при расширении модели или контроллера имя не создано. Поэтому вам нужно будет указать имя, чтобы он работал правильно. Это важно, потому что другие вещи, такие как папка файла просмотра, modelClass и псевдоним моделей, зависят от правильного имени.

Поэтому нет необходимости в расширении класса.

В моделях обратите внимание при работе с данными: Модели используют Model :: $ alias not $ name для этого. Причиной этого являются ассоциации. Если Code hasMany Programmer, но Programmer - ваша модель пользователя, то используется псевдоним, а псевдоним - Программист, а не пользователь. Поэтому используйте псевдоним в моделях, когда вы делаете что-то вроде $this->data[$this->alias]['field'].

+0

Можете ли вы привести пример расширения класса? Мы уже расширяем модель до AppModel и контроллера в AppController. –

+0

Благодарим вас за разъяснение! –

0

самое главное, что я вижу, cakephp использует публичное имя в запросах, запросы берут поля public Variable name = 'User';, затем приносят данные из таблицы User, будут назначены User.id как User_id, и если вы измените переменную public имя «Пользователь»; то вы увидите, как это влияет.

В основном используется, когда разработчики не соблюдают правила lan cakephp, или в моем случае, которые поначалу не очень хорошо понимали, как использовать условные обозначения торта php, когда слова не являются односложными. Затем влияет на ваши запросы и ваши данные. Чтобы исцелить эту часть, нужно было использовать публичное имя.

+0

Спасибо за ваш ответ, я обдумывал это довольно долгое время. –

+0

Это просто * неправильно *. Модели используют Model :: $ alias **, а не ** $ name для этого. Причиной этого являются ассоциации. Если Code hasMany Programmer, но программист - это ваша модель пользователя, используется псевдоним, а псевдоним - Programmer. Поэтому используйте * alias * в моделях, когда вы делаете что-то вроде $ this-> data [$ this-> alias] ['field']. – burzum