2012-04-03 7 views
0

Ich habe hier ein paar verschiedene Beiträge gelesen und kann nicht herausfinden, was ich falsch mache.CodeIgniter und DataMapper

Mein DB ist Setup wie folgt aus:

homes 
- id 
- address_id 
- price 
- etc... 

address 
- id 
- home_id 
- address1 
- address2 
- etc... 

Dann meine Modelle so aussehen, kondensiert.

home.php 
<?php 
class Home extends DataMapper { 
    public var $has_one = array('address'); 
} 

address.php 
<?php 
class Address extends DataMapper { 
    public var $has_one = array('home'); 
} 

Dann ist mein Controller verwendet die folgenden:

homes.php 
class Homes extends CI_Controller { 
    public function __construct() 
    { 
     parent::__construct(); 
     $this->load->library('datamapper'); 
    } 

    public function index() { 
     $homes = new Homes(); 
     $homes->include_related('address'); 
     $homes->get_iterated(); 

     $this->output->enable_profiler(TRUE); 

     _p($homes); // Self made function that wraps a print_r() in two <pre> tags. 
} 
} 

Wenn ich diese beiden Zeilen auszukommen bekomme ich den Standard CI Rückkehr Array.

$homes->include_related('address'); 
$homes->get_iterated(); 

Wenn ich nicht dann bekomme ich einen Serverfehler. Dies ist das erste Mal, dass ich DataMapper benutze und ich bin mir fast sicher, dass ich alles falsch mache, aber ich habe keine Ahnung, wo ich anfangen soll.

UPDATE:

ich mein Problem herausgefunden. Ich hatte die DB-Tabelle hatte ich var $table = 'addresses';

, dass alles festgelegt, um anzugeben address-addresses und in meinem address.php Modell zu ändern.

Antwort

1

Ja, Sie können den Tabellennamen in Ihrem Modell angeben. Auch Ihr Beispiel war falsch:

$homes = new Homes(); 

sein sollten

$homes = new Home(); 

ich in der Regel die Namen der Tabelle in meinem Modell neu zu definieren, um sicherzustellen, dass alles in Ordnung zu machen.

+0

Ich erkannte dies nach einiger Entwicklung. Ich bin immer noch nicht in der Lage, die Ergebnisse zu bekommen, nach denen ich suche, aber an dieser Stelle mache ich die Annahme, dass meine '$ has_many'-Variable die Ursache dafür ist.Ich kann ein einzelnes Ergebnis erhalten, aber eine Liste der zugehörigen Ergebnisse funktioniert nicht. – Seth

0

Ihre Beziehungen sind falsch. Ich nehme an, dass Sie eine One to One Relation Schiff setzen. Der Doc sagt: http://datamapper.wanwizard.eu/pages/relationtypes.html

Da dies eine Eins zu Eins-Beziehung ist, könnte die Beziehung auf drei Arten gespeichert wurde:

  1. Wie auf dem Arbeiter Tabelle dargestellt.
  2. Auf den Arbeitsplätze Tisch, als worker_id
  3. auf einem dedizierten workers_workplaces Join-Tabelle, mit der Spalten-ID, worker_id und workplace_id

Aber hier haben Sie * address_id * zu Hause hinzugefügt und * home_id * in Adresse. Sie müssen zwischen wählen. Zum Beispiel behalten Sie * home_id * in Adresse und entfernen Sie * address_id * in nach Hause.