/ / cakephp ako nájsť patrí id - cakephp, orm, find

cakephp, ako nájsť patrí id - cakephp, orm, nájsť

Existuje spôsob, ako v cakephp pomocou ORM získať položku, ktorá patrí do určitej podradenej položky. Napríklad som mal získať súvisiace Post záznam pre konkrétne poznámky záznamy.

Toto je môj model komentára:

var $belongsTo = array(
"Post" => array(
"className" => "Post",
"foreignKey" => "post_id",
"conditions" => "",
"fields" => "",
"order" => ""
)
);

Snažil som sa to, ale je to "vytiahnuť každý príspevok, dokonca aj tie, ktoré nemajú" t mať komentár, ktorý som sa pýtal proti:

$this->Post->contain("Comment");
$results = $this->Post->find("all", array(
"contain" => array(
"Comment" => array(
"conditions" => array(
"id" => 15
)
)
)));

Akýkoľvek iný spôsob, ako to urobiť?

odpovede:

0 pre odpoveď č. 1

Ste si istý, že nemusíte zadávať model vo vašich podmienkach?

Napríklad:

$this->Post->contain("Comment");
$results = $this->Post->find("all", array(
"contain" => array(
"Comment" => array(
"conditions" => array(
"Comment.id" => 15
)
)
)));

0 pre odpoveď č. 2

môj výskum ma priviedol k tomuto príspevku, ktorý sa týka tohto problému: http://nuts-and-bolts-of-cakephp.com/2008/07/17/forcing-an-sql-join-in-cakephp/

takže moje konečné riešenie bolo nasledovné:

    $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
)));

nie je pekná, ale dostane prácu :)