在cakephp中使用带有HABTM关系的find中的contains

时间:2012-02-21 14:31:09

标签: php cakephp cakephp-1.3

我在实体和国家之间有HABTM关系。以下查找返回我想要的数据,但我想将其简化为仅从实体返回自动收报机字段:

$blap = $this->Entity->Country->find('first', array('conditions' => array('Country.id' => 78)));

所以我添加了这样的包含:

$blap = $this->Entity->Country->find('first', array('conditions' => array('Country.id' => 78),'contain'=>'Entity.ticker));

但这没有效果。

我在调用find之前尝试在Entity模型上调用contains:

$this->Entity->contain('ticker');
$blap = $this->Entity->Country->find('first', array('conditions' => array('Country.id' => 78)));

但是这会产生以下错误消息

  

27包含1064:您的SQL语法中有错误;检查   手册,对应右边的MySQL服务器版本   在第1行的“包含”附近使用的语法0 28 SELECT Countryid,   CountrynameCountryhash FROM countries AS Country WHERE   Countryid = 78 LIMIT 1 1 1 1 29 SELECT Entityid,   EntitytickerEntityshares_outstanding,   Entitybegin_fiscal_calendarEntitylast_reported_quarter,   Entitynext_report_dateEntityobsolete_groups,   Entityactual_fiscal_year_endEntityfull_name,   EntitydepricatedEntityobsolete_country_id,   Entityticker2EntityhashCountriesEntityid,   CountriesEntitycountry_idCountriesEntityentity_id,   CountriesEntitydefault_country FROM entities AS Entity加入   countries_entities AS CountriesEntity ON   (CountriesEntitycountry_id = 78 AND CountriesEntityentity_id   = Entityid)32 32 1

作为备份计划,我可以编写代码来筛选$ blap中的结果并提取我想要的值,但我认为在find命令本身中有一些方法可以过滤。

1 个答案:

答案 0 :(得分:0)

如果您在Country模型上调用find,则应该包含它,例如:$this->Entity->Country->contain()

此外,您不能将字段直接放在包含调用上。 试着这样打电话:$this->Entity->Country->contain(array('fields' => 'ticker'))