Cakephp与同一模型的多个关系

Cakephp与同一模型的多个关系,cakephp,models,Cakephp,Models,我正在开发一个房地产应用程序,其中一套房子可以由一个或两个房地产经纪人列出。因此,我试图遵循蛋糕食谱第3.7.6.7节中给出的示例。以下是我的房地产经纪人模型中的情况: class Realtor extends AppModel { var $primaryKey = $num; var $name = 'Realtor'; var $hasMany = array('Homes' => array('className' => 'Home

我正在开发一个房地产应用程序,其中一套房子可以由一个或两个房地产经纪人列出。因此,我试图遵循蛋糕食谱第3.7.6.7节中给出的示例。以下是我的房地产经纪人模型中的情况:

class Realtor extends AppModel {
    var $primaryKey = $num;
    var $name = 'Realtor';
    var $hasMany = array('Homes' => 
        array('className' => 'Home',
              'foreignKey' => 'realtor_num',
        ...),
                         'CoListedHomes' =>
        array('className' => 'Home',
              'foreignKey' => 'realtor2_num',
        ...) 
    );
这完全破坏了应用程序,错误消息为“找不到模型CoListedHomes的数据库表co_listed_homes”

回头看第二个例子,Cookbook 3.7.6.7,他们的数据库中不应该或不需要单独的“messages\u received”和“messages\u sent”表,那么我做错了什么呢


ETA:奇怪的是(对我来说),我想我通过交换数组的顺序来处理这些关系:第一个数组,在foreignKey=realtor2_num上,叫做“ListedHomes”,第二个数组,在foreignKey=realtor2_num上,叫做“Home”。我想我的问题是,为什么顺序很重要,为什么Cake在某些情况下会开始谈论未找到的数据库表?

以防万一,我会将其构建为一个类别设置。然后在类别和主目录之间创建一个联接表


然后你可以在分类和家庭之间有一个hasandbelongtomy,以防万一,我会把它作为分类设置来构建。然后在类别和主目录之间创建一个联接表

然后,您可以在类别和家庭之间拥有HasandBelongTomany

“未找到模型
共有家庭的数据库表
共有家庭
”可能是指您没有为指向
家庭的
共有家庭定义模型

然而,我会将其编码为n:m,也就是Davidell所说的Hasandbelongosmany。

“数据库表
co_-listed_-homes
for model
CoListedHomes
未找到”可能指您没有为
CoListedHomes
定义的指向
homes
表的模型


然而,我会将其编码为n:m,也就是Davidell所说的Hasandbelongtomany。

我当然没有为共有结构的家庭定义模型,但我也没有为列表家庭定义模型,这一点在以后会起作用。我认为你不需要在这里定义模型;虽然Cake发现了$hasMany数组的第一个元素是“Homes”模型,但随后对“CoListedHomes”不是模型感到不安。(这也许可以解释为什么在我改变订单时它会起作用,所以第一个元素是非模型。)我同意HABTM关系可能是一条发展之路,而不是与发明Hasandbelongsto两个类别进行斗争。下一次我当然没有为共有家庭定义一个模型,但是我也没有为列表家庭定义一个模型,这在以后的工作中是有效的。我认为你不需要在这里定义模型;虽然Cake发现了$hasMany数组的第一个元素是“Homes”模型,但随后对“CoListedHomes”不是模型感到不安。(这也许可以解释为什么在我改变订单时它会起作用,所以第一个元素是非模型。)我同意HABTM关系可能是一条发展之路,而不是与发明Hasandbelongsto两个类别进行斗争。下一次我怀疑我把问题说错了,或者只是提供的信息不够。我将把这标记为一个正确的答案,因为更好的表设计首先肯定会使我免于此类问题!我怀疑我把问题说错了,或者只是提供的信息不够。我将把这标记为一个正确的答案,因为更好的表设计首先肯定会使我免于此类问题!