2016-04-20 12 views
0

Ошибка в том, что при создании кода контроллера переменная для связанной модели остается пустой и имя модели остается пустым. Ошибка возникает при создании контроллеров для всех моих таблиц, но вот полный пример одного из них. Я реплицировал проблему на новую установку cakephp 3.2.Выпечка контроллера с Cakephp 3.2 с использованием SQLite3 вызывает ошибку в методах add() и edit(), почему код генерируется неправильно?

Вот эти 2 строки некорректного кода, сгенерированного, я включил полный подробности ниже:

$ = $this->Customers->->find('list', ['limit' => 200]); 
    $this->set(compact('customer', '')); 

конфигурации Моя база данных в конфигурации/app.php:

'default' => [ 
    'className' => 'Cake\Database\Connection', 
    'driver' => 'Cake\Database\Driver\Sqlite', 
    'persistent' => false, 
    'host' => 'localhost', 
    //'port' => 'non_standard_port_number', 
    'username' => null, 
    'password' => null, 
    'database' => 'tgr.db', 
    'encoding' => 'utf8', 
    'timezone' => 'UTC', 
    'flags' => [], 
    'cacheMetadata' => true, 
    'log' => false, 
    'quoteIdentifiers' => false, 
    'url' => env('DATABASE_URL', null), 
] 

код, созданный для метода add(), который содержит неправильно созданный код.

public function add(){ 
    $customer = $this->Customers->newEntity(); 
    if ($this->request->is('post')) { 
     $customer = $this->Customers->patchEntity($customer, $this->request->data); 
     if ($this->Customers->save($customer)) { 
      $this->Flash->success(__('The customer has been saved.')); 
      return $this->redirect(['action' => 'index']); 
     } else { 
      $this->Flash->error(__('The customer could not be saved. Please, try again.')); 
     } 
    } 
    $ = $this->Customers->->find('list', ['limit' => 200]); 
    $this->set(compact('customer', '')); 
    $this->set('_serialize', ['customer']); 
} 

Моя база данных хранится ИНТ в корневом каталоге приложения, и приложение находит его и правильно соединяет от того, что я могу сказать. Схема базы данных:

-- Text encoding used: UTF-8 
-- 
PRAGMA foreign_keys = off; 
BEGIN TRANSACTION; 

-- Table: customers 
CREATE TABLE customers (_id INTEGER PRIMARY KEY,district_key INTEGER NOT NULL, name TEXT UNIQUE NOT NULL, short_name TEXT UNIQUE NOT NULL, job_count INTEGER, report_count INTEGER, FOREIGN KEY (district_key) REFERENCES districts (_id) ); 

COMMIT TRANSACTION; 
PRAGMA foreign_keys = on; 

ответ

0

Я нашел ответ. Колонки идентификатора моей базы данных были _id (из столбца id по умолчанию для android), и пекарня cakephp преследовала это, чтобы быть связанной моделью с пустым именем, понимающим, что она принимает все, что приходит до _id, и создает для нее модель. Я обновил все мои таблицы базы данных, чтобы отразить это, и он работает правильно.