Existe uma maneira no cakephp usando ORM para obter o item que pertence a um item filho específico. Por exemplo, eu deveria obter o registro de postagem relacionado para um registro de comentário específico.
Este é o meu modelo de comentário:
var $belongsTo = array(
"Post" => array(
"className" => "Post",
"foreignKey" => "post_id",
"conditions" => "",
"fields" => "",
"order" => ""
)
);
Eu estava tentando isso, mas ele é retirado de todos os posts, mesmo aqueles que não têm o comentário que estou consultando:
$this->Post->contain("Comment");
$results = $this->Post->find("all", array(
"contain" => array(
"Comment" => array(
"conditions" => array(
"id" => 15
)
)
)));
Alguma outra maneira de fazer isso?
Respostas:
0 para resposta № 1Tem certeza de que não precisa especificar o modelo em suas condições?
Por exemplo:
$this->Post->contain("Comment");
$results = $this->Post->find("all", array(
"contain" => array(
"Comment" => array(
"conditions" => array(
"Comment.id" => 15
)
)
)));
0 para resposta № 2
minha pesquisa me levou a este post sobre o problema com: http://nuts-and-bolts-of-cakephp.com/2008/07/17/forcing-an-sql-join-in-cakephp/
então minha solução final foi a seguinte:
$this->Post->unbindModel(array("hasMany" => array("Comment")));
$results = $this->Post->bindModel(array("hasOne" => array(
"Comment" => array(
"foreignKey" => false,
"conditions" => array("Comment.post_id = Post.id"))
)));
$results = $this->Post->find("all", array(
"conditions" => array(
"Comment.id" => 10
)));
não é bonito, mas faz o trabalho :)