one method inner habtm conditions cake all cakephp join has-and-belongs-to-many

cakephp - method - get cake php



Condiciones mĂșltiples de CakePHP en find() con HABTM (1)

Está buscando el comportamiento Containable; p.ej

// app_model.php var $actsAs = array( ''Containable'' );

Supongo que el usuario extiende AppModel, por lo que Containable se configurará para el niño (Usuario). Ahora, en su controlador, las condiciones para la clase relacionada se pueden colocar en la tecla ''contener'' del segundo argv de find (); p.ej

// users_controller.php $this->User->find(''first'', array( ''conditions'' => array(''User.id'' => $userId), ''contain'' => array( ''Item'' => array( ''conditions'' => array(''Item.symbol'' => $itemSymbol) ) ) );

Cake encontrará el usuario correspondiente y recuperará los elementos coincidentes (con el mismo user_id y el Item.Symbol especificado. Pero tenga mucho cuidado al usar ''contain'' => array () cuando no se requiera; de lo contrario, Cake recuperará todos los elementos definidos. asociaciones, que gravarán su base de datos.

Mi esquema tiene las siguientes relaciones:

User hasMany Transaction belongsTo User Item hasMany Transaction belongsTo Item User hasManyAndBelongsTo Item using Transaction as join table

Me gustaría devolver todos los elementos de un símbolo de artículo dado que pertenecen a una identificación de usuario determinada . Soy capaz de recuperar todos los elementos que pertenecen al usuario con

$this->User->find(''all'', array( ''conditions'' => array( ''User.id'' => $userId ) ) )

y puedo recuperar todos los artículos con un nombre de artículo dado con

$this->Item->find( ''all'', array( ''conditions => array( ''Item.symbol'' => $itemSymbol ) );

pero si trato de usar la matriz de condiciones (''Item.symbol'' => $ itemSymbol, ''User.id'' => $ userId) en $ this-> Item-> find (), $ this-> Item-> User -> find (), $ this-> User-> find (), o $ this-> User-> Item-> find (), me sale el error

SQL Error: 1054: Unknown column ''Item.id'' in ''where clause''

o

SQL Error: 1054: Unknown column ''Item.symbol'' in ''where clause''

He devorado HABTM en todas las versiones del libro de cocina y he leído decenas de publicaciones de SO / Foro al respecto, pero no he tenido suerte al formar esta consulta.

Información relevante: // asociaciones de 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'' => '''', ) );

// asociaciones de 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'' => '''', ) );

// Asociaciones de Transaction.php:

var $belongsTo = array(''User'', ''Item'');