Pregunta

Sé que esto tiene que tener una respuesta fácil, pero no puedo entenderlo. Después de las lágrimas, Estoy esperando que alguien aquí puede ayudar.

Esta es mi modelo YML:

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)

Como se puede ver, 3 tablas vinculadas se generan:

Identidad
- puede tener varios perfiles

Profile @ - tiene una identidad
- tiene un Profiletype

Profiletype
- puede tener varios perfiles

Ahora, en mi código, puede realizar consultas sobre los modelos generados por la Identidad y Profiletype.

Por ejemplo:

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

va a funcionar y productos:

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

Sin embargo, cuando voy a ejecutar cualquier consulta en la tabla de perfiles, no va a funcionar. Incluso una simple consulta como

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

falla. He intentado cambiar el nombre de la clase en el DE de 'perfiles' en lugar de 'Perfil'. Todavía nada.

¿Alguna idea sobre lo que estoy haciendo mal.

¿Fue útil?

Solución

Después de cambiar todas las variables posibles y rastreo a través de mi línea por línea del modelo, llegué a un embarazoso descubrimiento:

El controlador estaba llamando la Doctrina consulta desde fue llamado profile.php.

profile.php

<?php
class Profile extends Controller {

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

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

}

Culo pronto como puse el nombre del controlador de otra cosa que no 'perfil', de repente todo funcionó. Por ejemplo, dándole el nombre de docile.php:

docile.php

<?php
class Docile extends Controller {

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

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

}

'Perfil' no parece ser una palabra reservada en CodeIgniter ( enlace de texto ). No parece, sin embargo, que no se puede llamar una doctrina 'table class' de una clase controlador del mismo nombre.

Gracias por sus chicos de entrada. Espero que esto ahorra algún otro tipo de molestias similares.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top