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 !