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
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'))));
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,
Ton model Shopper devrait extends de AppModel au lieu de model directement
class Shopper extends AppModel {