我一般不熟悉 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.idas的所有行$subdomainsforeach($subdomains as $s)SubdomainsItems: 去获取whereSubdomainsItems.subdomain_id=Subdomains.idas的所有行$item_idsforeach($items_ids as $i)Items:获取whereItems.id=的所有行SubdomainsItems。items_id
这行得通,但我认为这消除了关系数据库的力量,我想了解这应该如何完成(即根据 Cakephp 约定或简单地通过任何 MySQL 语句来实现这一点)。
非常感谢您的帮助,我尝试学习 SQL 更复杂的方面,但它就在我的脑海中。:S