CakePHP 4查询:嵌套表的where子句不工作?

zhte4eai  于 6个月前  发布在  PHP
关注(0)|答案(1)|浏览(75)

我第一次使用CakePHP,我试图做一个(非常简单的)查询,但我没有成功完成。我已经设置了数据库的所有表,并且运行良好。现在,我有这个查询:

$CompaniesTable = $this->fetchTable('Companies'); 
$open_rounds = $CompaniesTable->find()->contain('Fundings' => ['FundingsFundingrounds']])->where(['Companies.fif_status_id IN' => [4, 5, 7], 'FundingsFundingrounds.round' => true])->limit(10);

字符串
在我看来,这应该是可行的,但当我执行时,我得到:
SQLSTATE[42 S22]:未找到列:1054“where clause”中的未知列“FundingsFundingrounds.round”
如果我删除'FundingsFundingrounds.round' => true,查询工作正常。我创建了另一个查询,看看'FundingsFundingrounds.round'是否真的存在,是的,它确实存在!
也许我错过了一个步骤,在这样的情况下使用where子句,我希望有人能帮助!

gxwragnw

gxwragnw1#

检查是否在单独的SQL查询中选择了Fundings和FundingsFundingrounds。如果是,(我假设)比你有有效的3个查询被执行。我猜你有关系:公司有许多基金有许多基金基金轮和基金基金轮基金到基金轮基金到公司到关系在'包含' ->左连接(默认)有许多关系在'包含' ->单独的查询(默认)
尝试:

$open_rounds = $this->fetchTable('FundingsFundingrounds')
->find()
->contain('Fundings' => ['Companies']])
->where([
  'Companies.fif_status_id IN' => [4, 5, 7],
  'FundingsFundingrounds.round' => true,
])
->limit(10);

字符串
你总是优雅的子查询选项,也可以满足您的需求。

相关问题