【问题标题】:cakePHP hasMany not joining the SQL querycakePHP 有很多没有加入 SQL 查询
【发布时间】:2012-05-09 08:22:43
【问题描述】:

我无法为我的分页器做一个简单的条件。我有一个调查和竞选模型。 Campaigns 在 Campaign 模型中设置了许多调查。

我想选择一个调查,并且分页器应该显示活动链接到,但我不断收到一个未知列 Survey.id - 检查时我看到调查没有加入到活动模型中,仅在 WHERE 子句中.我还发现 hasMany 不会将表加入查询。

我还能怎么做上面的事情?

【问题讨论】:

  • 如果营销活动有许多调查,调查有一个营销活动,不是吗?因此,如果您选择一项特定的调查,它将仅与一项活动相关联?那你为什么需要在这里分页?可能有什么我不明白的。也就是说,在某些情况下过滤 Model1.model2_id 而不是 Model2.id 会有所帮助。
  • 我拥有的是一个包含广告系列的页面(分页用于此页面)。我想要一个下拉列表,用户可以在其中选择一项调查,然后结果将返回与该调查相关的 1 个活动)。所以分页页面只会有 1 个结果。这只是进入活动的一种快捷方式(如果您知道调查是什么,但不知道它所链接的活动)
  • 这不是最优雅的解决方案,但您可以尝试在joins 键中手动添加关系。虽然,我最近发现了这个(我打算做的)这使它更简单(更少的代码)link
  • 虽然我刚刚注意到您的关系可能设置错误。如果其活动有很多调查,那么调查应该有活动 ID。所以我不知道它为什么要寻找Survey.id。在您的数据库中有 Survey.campaign_id 或 Campaign.survey_id 吗?
  • 我有 Survey.campaign_id - 请记住,活动没有 1 个调查,而是多个调查,因此它不会有一个survey_id,这就是问题所在。在 sql 中它本来应该是一个简单的“从广告系列中选择广告系列.id,调查 WHERE 调查.id=VALUE”

标签: cakephp model controller


【解决方案1】:

我找不到这个问题的答案。似乎 hasMany 不会自动添加到查询中。我曾建议在 cake 中使用可包含功能可能会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-02
    • 2018-07-24
    • 1970-01-01
    相关资源
    最近更新 更多