Ich beginne mit CodeIgniter und nach einigen Stunden Tauchen in Google bin ich ein bisschen verwirrt.CodeIgniter, Modelle und ORM, wie geht man damit um?
Lassen Sie uns versuchen, meine Frage mit einem einfachen Beispiel zu erklären: Ich habe eine Tabelle 'Auto' mit den Feldern 'Name' und 'Farbe'. Deshalb möchte ich eine PHP-Klasse Auto haben, so dass mein Code schließlich könnte wie folgt aussehen:
$car = new Car('BMW', 'red'); //new $car Object
$car->save(); //this will make an SQL insert to the table 'car'
//Lets query all cars
$cars = Car::get_all();
//cars will be an array of Car objects, (not a set of rows!)
Deshalb suche ich nach etwas ziemlich ähnlich, was Sie haben in RubyOnRails oder Django (Python). Ich muss alle Arten von Beziehungen handhaben und Code in einer echten OOP + MVC-Art schreiben können.
ist meine gescheiterten Ansätze sind es zu bekommen:
ein externen ORM (DataMapper, Lehre, AcidCrud ...)
Sie entweder zu viele Einstellungen erfordern, oder sie behandeln Beziehungen in einem schlechter Weg.
Mit CodeIgniter Klassen (zum Modell Klasse CodeIgniter zu verlängern)
class Car extends Model{
public function Car($name='',$color='')
{
$this->name = $name;
$this->color = $color;
parent::Model();
}
public function save()
{
$data = array(
'name' => $this->name ,
'color' => $this->color
);
$this->db->insert('cars' $data);
}
Und so weiter ... Problem mit diesem Ansatz ist, dass ein, wenn ein var_dump tun() eines Objekts $ Auto, ich siehe, dass es eine Menge Zeug aus dem CodeIgniter enthält, wie die Objekte CI_Config, CI_Input, CI_Benchmark, etc. Daher denke ich, dass dies keine gute Lösung ist, da jedes Objekt meiner Klasse Auto viele wiederholte Daten enthalten wird (Es wird eine schlechte Leistung haben!), nicht wahr?
Nicht die Modelle des CodeIgniter mit
ich meine Modellen sie von CodeIgniter Modell Klasse machen könnte, ohne erstreckt, und dann mit dem regulären PHP5 Konstruktor (__construct() statt Funktion Auto()), aber Problem in Dieser Fall ist: wie ich auf das $ db-Objekt zugreifen, um Querys mit ActiveRecord des CodeIgniter zu machen? und wie lade ich die Modelle (ihre Klassen) in die Controller?
Gute Frage treiben integrate, die codeigniter Modelle erfordern viel Aufwand bei der hierarchischen Daten zu manipulieren. Ich würde gerne Formen in Modellen definieren und validieren. Vielleicht genügen ein bisschen Mashup von Doctrine und die Formularbibliothek. – Keyo
Warum möchten Sie PHP verwenden, wenn Sie Erfahrung mit Rails und Django haben? – denysonique
[RedBean] (http://www.redbeanphp.com) ist eine große sehr einfach zu bedienen ORM –