cakephp2.x使用HABTM连接表中的数据检索/查询
我有两个通过HABTM关系连接的表<代码>投资组合和cakephp2.x使用HABTM连接表中的数据检索/查询,php,mysql,cakephp,cakephp-2.0,Php,Mysql,Cakephp,Cakephp 2.0,我有两个通过HABTM关系连接的表投资组合和资产。联接表是portfolions\u assets 我希望在联接表中有一个额外的字段,rebalance\u date,这样我就可以查询给定日期的投资组合中的资产。如何构建find,以便确定最近的日期并仅返回该日期的资产 因此,在我的投资组合模型中,我可能有: $params = array( 'conditions' => array( 'Portfolio.id' => 5, '?.rebalance_date'
资产
。联接表是portfolions\u assets
我希望在联接表中有一个额外的字段,rebalance\u date
,这样我就可以查询给定日期的投资组合中的资产。如何构建find
,以便确定最近的日期并仅返回该日期的资产
因此,在我的投资组合模型中,我可能有:
$params = array(
'conditions' => array(
'Portfolio.id' => 5,
'?.rebalance_date' => '2013-11-01' //no model name for this field as it's in the join table
),
'order' => array(...)
);
$result = $this->find('all', $params);
在上面的例子中,我只是输入了一个日期。我不确定如果不在Cake中编写原始查询,如何检索最新日期。(我可以做从投资组合中选择再平衡日期\u资产顺序按再平衡日期描述限制1;
但这不符合Cake的惯例)您需要使用hasMany-through模型:
您需要创建另一个模型,例如PortfolioAssets,该表需要是PortfolioAssets,而不是PortfolioAssets
那么您应该能够使用:
$assets = $this->Assets->find('all', array(
'conditions' => array(
'Portfolio.id' => 5,
'PortfolioAsset.rebalance_date' => '2013-11-01'
)
));
似乎已经做到了。虽然有点争吵,但还是管用的。如果从Portfolio
模型运行,那么find调用应该是$this->PortfolioAsset->find(…
)。