我在实体和国家之间有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
Country
。id
,Country
。name
,Country
。hash
FROMcountries
ASCountry
WHERECountry
。id
= 78 LIMIT 1 1 1 1 29 SELECTEntity
。id
,Entity
。ticker
,Entity
。shares_outstanding
,Entity
。begin_fiscal_calendar
,Entity
。last_reported_quarter
,Entity
。next_report_date
,Entity
。obsolete_groups
,Entity
。actual_fiscal_year_end
,Entity
。full_name
,Entity
。depricated
,Entity
。obsolete_country_id
,Entity
。ticker2
,Entity
。hash
,CountriesEntity
。id
,CountriesEntity
。country_id
,CountriesEntity
。entity_id
,CountriesEntity
。default_country
FROMentities
ASEntity
加入countries_entities
ASCountriesEntity
ON (CountriesEntity
。country_id
= 78 ANDCountriesEntity
。entity_id
=Entity
。id
)32 32 1
作为备份计划,我可以编写代码来筛选$ blap中的结果并提取我想要的值,但我认为在find命令本身中有一些方法可以过滤。
答案 0 :(得分:0)
如果您在Country
模型上调用find,则应该包含它,例如:$this->Entity->Country->contain()
。
此外,您不能将字段直接放在包含调用上。
试着这样打电话:$this->Entity->Country->contain(array('fields' => 'ticker'))
。