2016-04-20 9 views
1

Ich habe gerade DataMapper mit CodeIgniter eingerichtet und die Modelle wie erforderlich geschrieben.CodeIgniter DataMapper Tabellenname überschreiben funktioniert nicht

Allerdings habe ich etwas verpasst, als wenn ich eine Abfrage ausführen, kann DataMapper den Tabellennamen nicht überschreiben und denkt, dass es überhaupt keine Tabelle gibt.

Lustig ist, wenn ich die Überschreibung entfernen, funktioniert es wie es sollte (wenn auch mit einem Fehler, der besagt, dass die automatisch generierte Tabelle existiert nicht).

Modell-Code:

class Activity extends Datamapper { 

var $table = 'activity_log'; 

var $has_one = [ 
    'user' 
]; 

} 

Controller-Code:

$activity = new Activity(1); 

Fehler:

Error Number: 1064 
You have an error in your SQL syntax; 
check the manual that corresponds to your MySQL server version for the right 
syntax to use near 'WHERE `.`id` = 1' at line 2 

SELECT * WHERE `.`id` = 1 

Wie ich bereits erwähnt, wenn ich var $ Tabellen = 'activity_log' entfernen; dann wird es zurück auf die Suche nach Tischaktivitäten gehen, wie es sollte.

Antwort

0

Rules

DataMapper models must be named the singular version of the object name, with an uppercase first letter. So for a user object, the DataMapper model would be named User. The model should have a corresponding table in the database named as the lowercase, pluralised version of the object name. So for a DataMapper model named User, the table would be named users. For a DataMapper model named Country, the table would be named countries.

In most cases, the difference between the singular and plural version of an object name is just a matter of adding the letter s on the end.

sollte Ihr Modell als Activity_log benannt werden.

Docs.

+0

Leider hat dies nichts behoben. Selbst wenn der Modellname "activity_log" lautet und das Modell in "Activity_log" geändert wird, schlägt es immer noch fehl. Mir ist bewusst, wie Datamapper normalerweise auf Datenbanken verweist, aber ich bin mir auch bewusst, dieses Verhalten zu überschreiben (mit 'var $ table = 'activity_log')'. Mein Problem ist, dass wenn die Überschreibung vorhanden ist, die Tabelle vor der Abfrage auf 'null' gesetzt wird. – Stonestorm

+0

'var' ist veraltetes Schlüsselwort. Versuchen Sie stattdessen mit dem Schlüsselwort public (Sichtbarkeit). – Tpojka

+0

Nichts ändert sich, ich habe Angst. – Stonestorm