如何在CakePHP 2中更正此查询


How can I correct this query in CakePHP 2?

我有一个查询,我正试图在CakePHP 2.5.5中创建它。

我的数据库中有两个表对此问题感兴趣。第一个是Members,第二个是MemberStateLicensesMembers是关于该成员的信息,MemberStateLicenses是成员在各种状态下持有的许可证的表。

此粘贴包含在传递给find方法之前为查询构建的数组:http://pastebin.com/kM18nKpr

我正在尝试查询任何居住在某个州或在该州获得许可的成员。例如:

  • Select all members who live in Michigan, or are licensed in Ohio
  • Select all members who live in Maryland, or are licensed in Maryland

这是一个失败的场景:

  • 约翰住在俄亥俄州
  • 约翰没有任何执照
  • 我想知道谁住在俄亥俄州或在俄亥俄州有执照
  • 没有结果,尽管约翰确实住在俄亥俄州
  • 我给约翰在加利福尼亚州的执照,并重复同样的俄亥俄州/俄亥俄州查询。不出所料,约翰回来了

因此,当成员在MemberStateLicenses中没有记录时,此查询将失败。

我的问题是:

  • 我的查询排除了任何没有MemberStateLicenses记录的成员,这有什么问题

谢谢!

排除任何没有MemberStateLicenses记录的成员的查询有什么问题

您在Member和MemberStateLicenses之间有一个内部联接,这意味着只能选择Member中至少有一个相应记录的记录。

尝试将内部联接更改为LEFT JOIN。