IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

CodeIgniter/Doctrine - Création d'un model


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Décembre 2011
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Décembre 2011
    Messages : 4
    Points : 1
    Points
    1
    Par défaut CodeIgniter/Doctrine - Création d'un model
    Bonjour, je m'arrache les cheveux depuis ce matin a ajouter une table de liaison sur un outil basé sur codeigniter.

    Je pense avoir correctement définir la table dans le fichier yml et avoir correctement défini la table dans mon model. Pourtant lorsque j'appelle cet objet j'obtiens la magnifique erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Doctrine_Record_UnknownPropertyException: Unknown method UserInCategory::_assign_libraries in /Volumes/HD_Raid5/Docs en partage/htdocs/system/database/doctrine/Doctrine/Record.php on line 2658
    Le contenu de mon yml est assez conséquent, je vais mettre ici uniquement les tables impactées :

    Fichier schema.yml :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    CampaignCategory:
      tableName: campaign_category
      columns:
        [...]
      relations:
        [...]
        UserInCategory:
          type: many
          local: id
          foreign: category_id
        CategoryUser:
          type: many
          foreignAlias: Categories
          class: User
          refClass: UserInCategory
          foreign: category_id
          local: id
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    User:
      tableName: user
      columns:
        [...]
      relations:
        UserInCategory:
          type: many
          local: id
          foreign: category_id  
          [...]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    UserInCategory:
      tableName: user_in_category
      columns:
        id:
          type: integer(9)
          fixed: false
          unsigned: false
          primary: true
          autoincrement: true
        user_id:
          type: integer(9)
          fixed: false
          unsigned: false
          primary: false
          notnull: true
          autoincrement: false
        category_id:
          type: integer(9)
          fixed: false
          unsigned: false
          primary: false
          notnull: false
          autoincrement: false
      relations:
        User:
          foreignAlias: UserInCategory
          local: user_id
        CampaignCategory:
          foreignAlias: UserInCategory
          local: category_id
    Modele de base :

    Relation ajouté dans le model user :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $this->hasMany('UserInCategory', array(
                 'local' => 'id',
                 'foreign' => 'user_id'));
     
            $this->hasMany('CampaignCategory as Categories', array(
                 'refClass' => 'UserInCategory',
                 'local' => 'category_id',
                 'foreign' => 'id'));
    Relation ajouté dans le model CampaignCategory :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $this->hasMany('UserInCategory', array(
                 'local' => 'id',
                 'foreign' => 'category_id'));
     
            $this->hasMany('User as CategoryUser', array(
                 'refClass' => 'UserInCategory',
                 'local' => 'id',
                 'foreign' => 'category_id'));
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
     
    <?php
     
    /**
     * Base_UserInCategory
     * 
     * This class has been auto-generated by the Doctrine ORM Framework
     * 
     * @property integer $id
     * @property integer $user_id
     * @property integer $category_id
     * @property User $User
     * @property UserCategory $UserCategory
     * 
     * @package    ##PACKAGE##
     * @subpackage ##SUBPACKAGE##
     * @author     ##NAME## <##EMAIL##>
     * @version    SVN: $Id: Builder.php 7490 2010-03-29 19:53:27Z jwage $
     */
    abstract class Base_UserInCategory extends Doctrine_Record
    {
        public function setTableDefinition()
        {
            $this->setTableName('user_in_category');
            $this->hasColumn('id', 'integer', 9, array(
                 'type' => 'integer',
                 'fixed' => 0,
                 'unsigned' => false,
                 'primary' => true,
                 'autoincrement' => true,
                 'length' => '9',
                 ));
            $this->hasColumn('user_id', 'integer', 9, array(
                 'type' => 'integer',
                 'fixed' => 0,
                 'unsigned' => false,
                 'primary' => false,
                 'notnull' => true,
                 'autoincrement' => false,
                 'length' => '9',
                 ));
            $this->hasColumn('category_id', 'integer', 9, array(
                 'type' => 'integer',
                 'fixed' => 0,
                 'unsigned' => false,
                 'primary' => false,
                 'notnull' => false,
                 'autoincrement' => false,
                 'length' => '9',
                 ));
        }
     
        public function setUp()
        {
            parent::setUp();
            $this->hasOne('User', array(
                 'local' => 'user_id',
                 'foreign' => 'id'));
     
            $this->hasOne('CampaignCategory', array(
                 'local' => 'category_id',
                 'foreign' => 'id'));
     
        }
    }
    Loin d'être expert sur le framework codeigniter, j'ai dupliqué une table de liaison existante et adapter mon code en espérant que cela fonctionne. Il semblerait que je rate un truc mais je ne sais quoi.

    Si quelqu'un a une idée, je suis preneur !

  2. #2
    Nouveau Candidat au Club
    Inscrit en
    Décembre 2011
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Décembre 2011
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Je viens de trouver une première erreur d'inattention dans le ficher yml sur la table user.
    Maintenant cela donne ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    User:
      tableName: user
      columns:
        [...]
      relations:
        UserInCategory:
          type: many
          local: id
          foreign: user_id  
          [...]
    Mais cela ne fonctionne toujours pas ...

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Décembre 2011
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Décembre 2011
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Plus je fais de tests et plus je me dis que le problème vient peut etre de ma facon d'appeler le model.

    N'ayant pas trouver comment ce faisait le chargement d'un model dans le code existant, j'ai suivi la doc et ajouté un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->load->model('UserInCategory');
    Au dessus de mon code dans le controller, le problème peut-il venir de cet appel différent des autres ?

  4. #4
    Nouveau Candidat au Club
    Inscrit en
    Décembre 2011
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Décembre 2011
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Mon problème est réglé et ne venait pas du .yml.

    Sujet Clos.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Création/Edition de model complex
    Par Invité dans le forum ASP.NET MVC
    Réponses: 1
    Dernier message: 26/05/2013, 15h49
  2. Réponses: 1
    Dernier message: 19/05/2009, 09h40
  3. [MySQL] Création des tables et modele E/A
    Par clem037 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 04/04/2009, 03h28
  4. création JDBC Provider via Wsadmin et Modeles
    Par Billette dans le forum Websphere
    Réponses: 1
    Dernier message: 11/06/2008, 08h32
  5. [MySQL] création des modeles
    Par vacknov dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 25/07/2006, 14h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo