Bonjour à vous et merci d'avance,

Voila je rencontre un petit problème avec mon code.
Le Behavior chargé en amont par mon appModel, n'est pas pris en charge dans un de mes models.
Pour ce fait j'ai du le charger depuis sont controller. Certes ça fonctionne, mais je suis curieux de savoir pourquoi.

Nom des la tables: shoppers et posts_shoppers et posts
Nom du model, Shopper.php
Nom du controller, ShoppersController.php

Ce que je fais

Décrivez ici votre code ou ce que vous cherchez à faire

AppModel.php

<?php
App::uses('Model', 'Model');
class AppModel extends Model {
    public $actsAs = array('Containable');
    public $recursive = -1;
}

Shopper.php

<?php
App::uses('Model', 'Model');
class Shopper extends Model {
    public $primaryKey = 'user_id';
    public $hasOne = array(
        'User' => array(
            'foreignKey' => 'id',
            'fields' => ['id', 'username']
        )
    );

    public $hasAndBelongsToMany = array(
        'Post' => array(
            'className' => 'Post',
            'joinTable' => 'posts_shoppers',
            'foreignKey' => 'user_id',
            'associationForeignKey' => 'post_id',
            'conditions' => '',
            'unique' => true,
            'fields' => '',
            'order' => array('created' => 'DESC') 
        )
    );
}

ShoppersController.php

 $data = $this->Shopper->find('first', array('conditions' => array('user_id' => $this->Auth->User('id')),
                                                                            'contain' => array('Post' => array('Comment'))));

Solution provoisoire

Dans ce cas, le behaviors ne fonctionne pas.
Mais si je le charge dans le controller, ça fonctionne.

ShoppersController.php

$this->Shopper->Behaviors->attach('Containable');

Merci encore,

2 réponses


Grafikart
Réponse acceptée

Ton model Shopper devrait extends de AppModel au lieu de model directement

class Shopper extends AppModel {

Merci l'ami,