Mon schéma a les relations suivantes:plusieurs conditions modèles CakePHP à trouver() avec HABTM
User hasMany Transaction belongsTo User
Item hasMany Transaction belongsTo Item
User hasManyAndBelongsTo Item using Transaction as join table
Je voudrais revenir tous les éléments d'un symbole élément donné qui appartiennent à un identifiant d'utilisateur donné. Je suis en mesure de récupérer tous les éléments qui appartiennent à l'utilisateur avec
$this->User->find('all', array('conditions' =>
array('User.id' => $userId)))
et je suis en mesure de récupérer tous les éléments avec un nom d'élément donné avec
$this->Item->find('all', array('conditions =>
array('Item.symbol' => $itemSymbol));
mais si je tente de utiliser le tableau de conditions ('Item.symbol' => $ itemSymbol, 'User.id' => de $ userid) sur $ this-> item-> find(), $ this-> item-> Utilisateur-> find() , $ this-> Utilisateur-> find(), ou $ this-> Utilisateur-> item-> find(), je reçois l'erreur soit
SQL Error: 1054: Unknown column 'Item.id' in 'where clause'
ou
SQL Error: 1054: Unknown column 'Item.symbol' in 'where clause'
Je l'ai dévoré HABTM dans toutes les versions du livre de cuisine et de lire des dizaines de forum/SO messages à ce sujet, mais je ne l'ai pas eu de chance dans la formation de cette requête.
Infodesks: // associations User.php
// a user hasMany transactions
var $hasMany = array('Transaction' =>
array('className' => 'Transaction',
'order' => 'Transaction.created DESC', // order by descending time of transaction
//'limit' => '1', // change this if we need more, for example, if we need a user transaction history
'foreignKey' => 'user_id',
)
);
// a user hasAndBelongsTo items through transactions
var $hasAndBelongsToMany = array('Item' =>
array('className' => 'Item',
'joinTable' => 'transactions',
'foreignKey' => 'user_id',
'associationForeignKey' => 'item_id',
'order' => '',
'limit' => '',
'unique' => true,
'finderQuery' => '',
'deleteQuery' => '',
)
);
// associations item.php
var $hasMany = array('Transaction' =>
array('className' => 'Transaction',
'order' => 'Transaction.created DESC',
//'limit' => '1', // change this if we need more, for example, if we need a item transaction history
'foreignKey' => 'item_id',
)
);
// a item hasAndBelongsTo users through transactions
var $hasAndBelongsToMany = array('User' =>
array('className' => 'User',
'joinTable' => 'transactions',
'foreignKey' => 'item_id',
'associationForeignKey' => 'user_id',
'order' => '',
'limit' => '',
'unique' => true,
'finderQuery' => '',
'deleteQuery' => '',
)
);
// associations Transaction.php:
var $belongsTo = array('User', 'Item');
Pouvez-vous préciser le groupe '(1 = 1) par user_id' et pourquoi vous avez une relation' hasMany' et comme HABTM avec la transaction sur les deux modèles ?. –
J'ai éliminé le (1 = 1) groupe par une partie user_id je l'ai copié de certains tutoriel et il est probablement superflu -. retirer n'a eu aucune incidence sur la question ou le résultat –
A Transactions hasMany utilisateur (et vice versa), car t voici les données de transaction que je dois enregistrement qui n'a rien à voir avec l'adhésion à un utilisateur à un élément, comme la quantité de transaction, le prix de transaction, etc. Articles HABTM utilisateur parce qu'un utilisateur peut avoir plusieurs objets et chaque objet peut avoir beaucoup d'utilisateurs. Commenter seulement la relation de hasMany dans l'utilisateur et l'article n'a aucun impact sur les résultats. Commenter uniquement la relation HABTM dans User et Item n'a pas non plus d'impact sur les résultats. –