我一般不熟悉 MySQL 或数据库,所以这是我的数据模型 (table{cols}]),以使我的问题连贯:
Domains{id, name}
注意:此处的“域”不是指网络域
Subdomains{id, domain_id, name}
Items{id, subdomain_id, name}
SubdomainsItems{id, subdomain_id, item_id}
没有 domain_id 列!
MyItems Controller
有一个功能,fetchWithin($domains, $subdomains)
最终应该只执行两个 complexish 之一find()
。这是我无法克服的复杂。
以编程方式我可以实现这一点,但我很确定更好的方法是通过巧妙的连接等。唉,目前这是方法:
如果$domains
为空,则只执行步骤 2&3,否则:
foreach($domains as $d)
Subdomains
: 获取whereSubdomain.domain_id
=Domains.id
as的所有行$subdomains
foreach($subdomains as $s)
SubdomainsItems
: 去获取whereSubdomainsItems.subdomain_id
=Subdomains.id
as的所有行$item_ids
foreach($items_ids as $i)
Items
:获取whereItems.id
=的所有行SubdomainsItems
。items_id
这行得通,但我认为这消除了关系数据库的力量,我想了解这应该如何完成(即根据 Cakephp 约定或简单地通过任何 MySQL 语句来实现这一点)。
非常感谢您的帮助,我尝试学习 SQL 更复杂的方面,但它就在我的脑海中。:S