Frage

Ich weiß, dass dies eine einfache Antwort haben, aber ich kann es nicht herausgefunden. Nach Tränen, jemand hier kann ich gehofft, ich helfen.

Hier ist mein YML Modell:

Identity:
  columns:
    id:
      type:           integer(10)
      primary:        true
      autoincrement:  true
    username:
      type:           string(255)

Profile:
  columns:
    id:
      type:           integer(10)
      primary:        true
      autoincrement:  true
    identity_id:
      type:           integer(10)
    profiletype_id:
      type:           integer(10)
    name:
      type:           string(255)
  relations:
    Identity:
      local:          identity_id
      foreign:        id
      class:          Identity
      foreignAlias:   Profiles
    Profiletype:
      local:          profiletype_id
      foreign:        id
      class:          Profiletype
      foreignAlias:   Profiles

Profiletype:
  columns:
    id:
      type:           integer(10)
      primary:        true
      autoincrement:  true
    type:
      type:           string(255)

Wie Sie sehen können, 3 verknüpfte Tabellen erzeugt werden:

Identität
- können mehrere Profile haben

Profil
- hat eine Identität
- hat ein Profil

Profile
- können mehrere Profile haben

Nun, in meinem Code, ich kann Abfragen auf den generierten Modelle für Identity und Profiledurchführen.

Zum Beispiel:

        $q = Doctrine_Query::create()
          ->select('i.*')
          ->from('Identity i');
        echo $q->getSqlQuery();

arbeiten und produzieren:

SELECT i.id AS i__id, i.username AS i__username FROM identity i

Allerdings, wenn ich gehe jede Abfrage auf der Profiltabelle laufen, wird es nicht funktionieren. Selbst eine einfache Abfrage wie

        $q = Doctrine_Query::create()
          ->select('p.*')
          ->from('Profile p');
        echo $q->getSqlQuery();

versagt. Ich habe versucht, in der FROM zu ‚Profilen‘ anstelle von ‚Profil‘ die Klassennamen zu ändern. Immer noch nichts.

Alle Ideen, was ich falsch mache.

War es hilfreich?

Lösung

Nach jedem möglichen variablen Ändern und Tracing durch mein Modell Zeile-für-Zeile, kam ich zu einer peinlichen Entdeckung:

Der Controller ich die Lehre Abfrage rief aus profile.php aufgerufen wurde.

profile.php

<?php
class Profile extends Controller {

    function Profile()     {
        parent::Controller();
    }

    function index()     {
        $q = Doctrine_Query::create()
            ->from('Profile');
        echo $q->getSqlQuery();
    }

}

Ass sobald ich den Controller etwas anderes als ‚Profil‘ genannt, es ist alles auf einmal gearbeitet. Zum Beispiel, es Namensgebung docile.php:

docile.php

<?php
class Docile extends Controller {

    function Docile()     {
        parent::Controller();
    }

    function index()     {
        $q = Doctrine_Query::create()
            ->from('Profile');
        echo $q->getSqlQuery();
    }

}

'Profil' erscheint nicht ein reserviertes Wort in CodeIgniter ( link text ). Es scheint jedoch, dass Sie nicht eine Lehre ‚Tabellenklasse‘ aus einer Controller-Klasse mit dem gleichen Namen nennen können.

Vielen Dank für Ihre Eingabe Jungs. Hoffe, das spart jemand anderes ähnliche Probleme.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top