2016-06-27 8 views
0

Возможно, это простой вопрос, но я не нашел его в кулинарной книге. Я смущен, когда имя для некоторых множественного числа слов с «х»Cakephp 3 - Название конвенции во множественном числе

Пример: Город -> Города

  • Контроллер: CitiesController

  • Таблица: CitiesTable

  • модели : Город ???? или Citie ???

Теперь оба сделаны ошибки при запуске приложения. Ошибка не найдена.

Благодарим за любые ответы и извините, если мой английский слишком плохой.


UPDATE 28 июня 2016 Я нашел решение. На самом деле, я просто сохранил свое имя:

  • Контроллер: CitiesController в ИПВ/Controller/CitiesController.php

  • Таблица: CitiesTable в ИПВ/модель/Таблица/CitiesTable.php

  • модели или Entity: Город в ИПВ/Модель/Entity/City.php

Это работает для меня.

Благодарим за всех.

+0

** Модель **? Возможно, вы имели в виду ** Сущность **? Всякий раз, когда вы принимаете ошибки, всегда отправляйте сообщение об ошибке _complete_, включая _full_ stacktrace (идеально скопированное из журналов, где оно доступно в удобной для чтения форме), даже если проблема может быть очевидна для людей, знакомых с CakePHP! – ndm

+0

Некоторые поисковые запросы раскрывают это: [единственное] (http://sandbox.dereuromark.de/sandbox/inflector?string=city) vs [множественное число] (http://sandbox.dereuromark.de/sandbox/inflector?string=cities). Но документы вообще утверждают, что они довольно чисты. Особенно, поскольку в классах 3.x и table как контроллер, так и таблица (модель) являются множественными. Только сущность не является. – mark

ответ

0

Общее использование имени контроллера/сущности/таблицы является единственной формой существительного (в вашем случае CityController, CityTable и City). Это устраняет путаницы между сингулярным и множественным числом.

Другая хорошая практика заключается в том, что ваши таблицы в БД должны быть названы с единственной сущностью, которую они представляют (например, ваша таблица city, поэтому ваш класс Table должен называться «CityTable»). Таким образом, вы всегда можете связать информацию в источнике с таблицами в БД.

0

Update 11 августа 2016

Привет всем,

Извините за долгое время, чтобы ответить на этот вопрос. Я был очень занят. Я узнал свой ответ. Я не использовал таблицу «город». Вместо этого я использовал «m_cities». (M означает «Мастер»).Так что все мои файлы и классы имени являются:

модели> Entity:

MCity.php 

Класс:

class MCity extends Entity{ 
... 
} 

модели> Таблица

MCitiesTable.php 

Класс:

class MCitiesTable extends Table 
{ 
... 
} 

В классе MCity в файле MCity.php. Я определил инициализацию следующим содержимым для объявления имени таблицы для CakePHP, понимающего имя моей таблицы.

parent::initialize(); 
//Define used table name in database 
$this->table('m_cities'); 

Так Конечное содержание этого класса:

class MCity extends Entity 
{ 
    public function initialize(array $config) 
    { 
     parent::initialize(); 
     //Define used table name in database 
     $this->table('m_cities'); 

    }//end initialize 

}//end class 

Все не работали нормально для моего проекта до сих пор. Из-за того, что кто-то не видел мое обновление в сообщении, я обновляю его как ответ для поиска людей.

Спасибо всем.