2017-11-07 3 views
0

Ich versuche, eine neu erstellte Entität zu speichern. Save gibt false zurück, aber ich kann keine Validierungsfehler oder SQL-Fehler sehen und es wird keine Ausnahme ausgelöst.CakePHP 3 neue Entität speichern schlägt fehl, ohne Fehler

Das Entitätsobjekt wird mit newEntity() für das Tabellenobjekt erstellt und dann aufgefüllt. Wenn ich dann save() aufrufe, wird false zurückgegeben. Dies ist die Debug-Ausgabe des Entitätsobjekt nach save() fehlschlägt:

object(App\Model\Entity\TickerValue) { 
    'from_currency_id' => (int) 1, 
    'to_currency_id' => (int) 1228, 
    'created' => (int) 1509594561, 
    'value' => (float) 0.00726931, 
    '[new]' => true, 
    '[accessible]' => [ 
     '*' => false 
    ], 
    '[dirty]' => [ 
     'from_currency_id' => true, 
     'to_currency_id' => true, 
     'created' => true, 
     'value' => true 
    ], 
    '[original]' => [], 
    '[virtual]' => [], 
    '[errors]' => [], 
    '[invalid]' => [], 
    '[repository]' => 'TickerValues' 
} 

Wenn ich versuche, diese Werte manuell in phpMyAdmin Einfügen es funktioniert gut.

Dies ist die Tabelle:

CREATE TABLE 'ticker_values' (
    'from_currency_id' int(11) NOT NULL, 
    'to_currency_id' int(11) NOT NULL, 
    'created' int(11) NOT NULL, 
    'value' decimal(24,8) NOT NULL 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

ich Abfrage-Protokollierung versucht Ein- und bin nur ein paar dieser Einträge bekommen:

2017-11-07 01:13:29 Debug: duration=0 rows=0 ROLLBACK 
2017-11-07 01:13:29 Debug: duration=0 rows=0 BEGIN 

Dieser Code wird von einer Shell-Klasse ausgeführt. Aber in einer anderen Funktion in der gleichen Klasse funktioniert eine sehr ähnliche Sicherung, also glaube ich nicht, dass dies das Problem ist.

Die Tabellen- und Entity-Klassen enthalten keine Logik oder Callbacks.

Danke für jede Hilfe mit diesem!

EDIT: Das war das Problem - ich speicherte die Entität zu einem anderen Modell. Sollte das nicht eine Ausnahme auslösen?

+1

enthält Ihren Code – Beginner

+0

Können Sie auch den Controller, den Sie verwenden, um die Daten zu speichern? – Aarrbee

+0

Hey Leute, habe gerade den Code hinzugefügt. Ich habe es ursprünglich nicht aufgenommen, weil nicht viel los ist, aber hoffentlich wird es die Dinge klarer machen! Wie ich erwähnt habe, verwende ich eine Shell-Klasse anstelle eines normalen Controllers, aber das scheint nicht das Problem zu sein. – Simon

Antwort

0

Das Problem bestand darin, dass ich eine TickerValue-Entität erstellte, sie aber tatsächlich im Währungsmodell speicherte.

Es scheint mir, dass dies zu einer Ausnahme führen sollte, aber vielleicht gibt es jemanden in der CakePHP-Community, der besser platziert ist als ich, um den Aufruf darüber zu machen, ob dies als Fehler gemeldet werden sollte.