2016-04-20 21 views
0

Der Fehler besteht darin, dass beim Erstellen des Controller-Codes eine Variable für ein zugehöriges Modell leer bleibt und der Name des Modells leer bleibt. Der Fehler tritt beim Erstellen der Controller für alle meine Tabellen auf, aber hier ist ein vollständiges Beispiel von einem von ihnen. Ich habe das Problem bei einer Neuinstallation von CakePHP repliziert. 3.2. HierDas Baking eines Controllers mit CakePHP 3.2 mit SQLite3 erzeugt einen Fehler in den Methoden add() und edit(). Warum wird der Code falsch generiert?

ist die 2 Zeilen falschen Code generiert, ich alle Details unten enthalten haben:

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

Meine Datenbank-Konfiguration in config/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), 
] 

Der Code erstellt für die add() - Methode, die den falsch erstellten Code enthält.

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']); 
} 

Meine Datenbank ist int Anwendungsstamm gespeichert und die App findet sie und verbindet richtig von dem, was ich sagen kann. Datenbankschema:

-- 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; 

Antwort

0

Ich fand die Antwort. Meine Datenbank-ID-Spalten waren _id (von der Android-Standard-ID-Spalte) und CakePHP Bäckerei interprising war dies ein verwandtes Modell mit einem leeren Namen Sinn, es nahm, was vor _id kommt und ein Modell dafür erstellen. Ich habe alle meine Datenbanktabellen aktualisiert, um dies zu berücksichtigen, und es funktioniert ordnungsgemäß.