У меня есть устаревшая (не записанная в Cake именах) база данных в приложении CakePHP 3.5.13.
Одна из таблиц базы данных называется article_95
.
Когда я пытался запечь приложение, оно показывало имя сущности как Article95
. Затем он выдает множество сообщений об ошибках:
Table 'article95' doesn't exist
Итак, я прочитал Ошибка CakePHP: торт Bake использует неверное имя таблицы и Как использовать имя таблицы, отличное от имени в базе данных в торт PHP 3 и решил сделать это вручную, используя setTable()
.
Итак, я создал src/Model/Table/Article95Table.php
со следующим кодом:
namespace App\Model\Table;
use Cake\ORM\Table;
class Article95Table extends Table
{
public function initialize(array $config)
{
$this->setTable('article_95');
}
}
Но, похоже, это не придет в голову. В контроллере я создал метод тестирования и сделал следующее:
Cache::clear(false);
$Article95 = TableRegistry::get('Article95');
debug($Article95->find()->list());
Но он придумывает:
SQLSTATE[42S02]: Base table or view not found: 1146 Table 'article95' doesn't exist
Как будто он не читает метод setTable()
.
Я использовал Cache::clear(false)
, чтобы убедиться, что он не кэшируется, и проверил каталог tmp/cache
на наличие каких-либо подозрительных файлов - там ничего не актуально.
Есть идеи?
Точно так же, если я изменю свой оператор debug()
на debug($Article95)
, я получу следующее сообщение с неверным именем таблицы:
object(Cake\ORM\Table) {
'registryAlias' => 'Article95',
'table' => 'article95',
'alias' => 'Article95',
'entityClass' => '\Cake\ORM\Entity',
'associations' => [],
'behaviors' => [],
'defaultConnection' => 'default',
'connectionName' => 'default'
}
Между прочим, если я добавлю несуществующее имя класса / сущности в TableRegistry::get()
- например, TableRegistry::get('dsfdsfdsfsd');
, это не выдаст сообщение об ошибке, но покажет объект выше с несуществующим именем таблицы , Наверняка это тоже неправильно?