Соглашение об именовании таблицы, файла модели и класса модели в cakeStack Overflow

Я использую CakePHP 2.6.9. У меня есть таблица с именем: chat_info и файл модели: ChatInfo.php и класс внутри ChatInfo:

 <?php
/**
*
*/
class ChatInfo extends AppModel
{
var $name = "chatinfo";

}

?>

но это показывает ошибку. Я искал эту ошибку и обнаружил, что это связано с нарушением соглашения об именах в cakecaphp. Но что я делаю здесь?

-1

Решение

Модель :: useTable

Как найдено в документы:

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

Соглашения не должны быть неразрывными правилами. Это руководящие принципы, которые, если им следовать, облегчают жизнь. Это не значит, что им нужно следовать. С помощью useTable можно использовать любое имя таблицы, в этом случае:

class ChatInfo extends AppModel
{
public $useTable = "chat_info";

}

Два в стороне, если вы на самом деле не используете php4:

  1. Это ужасная идея установить имя модели на что-то отличное от фактического имени модели. Нет необходимости устанавливать его на что-либо, так как он предназначен для совместимости с php4. Название модели название класса, установка его на что-то другое может легко привести к путанице или неожиданным побочным эффектам.
  2. Объявление переменных с var это стиль php 4, используйте возможности используемой версии php, т.е. объявляйте переменные используя публичный, охраняемый или частный.
1

Другие решения

если вы переименуете таблицу из chat_info в chat_infos все будет хорошо

Или, если вы хотите сохранить это имя для таблицы, добавьте это в вашу модель:

$useTable = 'chat_info';

и ваша модель будет связана с таблицей chat_info (без режима множественного числа)

1

По вопросам рекламы [email protected]