Como faço para consultar uma tabela com base com relação HABTM, proporcionando condições adicionais em CakePHP?
-
03-07-2019 - |
Pergunta
Como posso fazer isso no CakePHP:
Estou usando duas tabelas (regions
e safaris
) tendo um relacionamento muitos-para-muitos. As tabelas são unidas por outra tabela chamada regions_safaris
(com campos region_id
& safari_id
). Quero buscar todos safaris
atender um determinado critério como durações de 5 dias e em uma determinada região. Isto deve ser implementado no CakePHP
Solução
juma,
Por favor resistir a postar várias vezes tão rapidamente.
Para mais referência, consulte o Cakebook Tem-E-pertence-para-muitos. É exatamente o que você está descrevendo. Consulte http://book.cakephp.org/view/83/hasAndBelongsToMany-HABTM
Em suma, supondo que você tem a configuração Bolo de modelos corretamente (com o relacionamento HABTM estabelecida entre regiões, safaris, e regions_safaris, verificar o índice 'joinTable' no array hasAndBelongsToMany var $, nos modelos), você faria isso :
class SafariModel extends AppModel
{
var $name = 'Safari';
var $hasAndBelongsToMany = array( 'Tag'=>array( ..., 'joinTable'=>'regions_safaris', ... );
function findSafaris( $duration = 5, $region = null )
{
return $this->find('all', array('conditions'=>array('Region.region_name'=>$region, 'Safari.duration'=>$duration) );
}
... // rest of class
}