在经历了几周的这种不便之后,我决定在这里打开现在的主题。一个可以帮助我的主题,但我相信它也可以帮助其他人解决同样的问题!
我想知道如何命名hasMany through table(因此带有附加字段)的表,控制器和模型以及它的耦合表。我试图坚持使用CakePHP命名约定,如其食谱中所述,但这不断给我一些“找不到对象”的错误。出于实际原因,我会用多字命名表向您展示我的问题。也许这可能是问题的原因? ;)
场合
我有一个主题公园的粉丝,就像你现在一样,主题公园有很多景点。要乘坐景点,您必须拥有最小的高度。有时,小人只能与成年伴侣一起骑车。但大多数时候:你被允许乘坐景点,因为你的身高足够高;)
现在我想在我的网站上显示特定景点的信息。名称,内容,照片等。除了这些信息之外,我想展示我的客人,如果他们(或他们的孩子)足够高,可以乘坐这个景点。它应该是这样的:
0m00 -> 1m00: not allowed
1m00 -> 1m30: allowed with an adult companion
1m30 -> 1m90: allowed
数据库
我有两个代表两个对象的表:“吸引力”和“attraction_accessibilities”。在这种情况下,我100%确定数据库名称是否正确。
表“attraction_accessibilities”(id - name):
1 - Not allowed
2 - Allowed with an adult companion
3 - Allowed
表“吸引力”(id - name):
1 - Boomerang
2 - Huracan
3 - Los Piratas
4 - El Volador
...
其次,我应该在“吸引力”和“吸引力 - 可接受性”之间设置另一个表格。该表应包含:
我想我应该将该表命名为“attraction_accessibilities_attractions”。这是另外两个表的缩写,我这样做是因为CakePHP在您建立HABTM关联时提出了它(http://book.cakephp.org/2.0/en/models/associations-linking-models-together.html#hasandbelongstomany-habtm)。
但不幸的是,当我这样称呼它时,我从未成功地将我的应用程序中的这些模型链接在一起。
问题
是否有人遇到过相同的问题但找到了解决方法?如果“是”:我应该如何命名我的数据库表并且也很重要:我应该如何命名我的控制器和模型.php文件?
非常感谢能够帮助我和其他一些无望的程序员的人;)
答案 0 :(得分:0)
如果您使用HABTM关系与唯一设置keepExisting,那么您可以根据需要命名表格,并根据您选择的名称设置joinTable参数
即。在你的景点模型
public $hasAndBelongsToMany = array(
'AttractionAccessibility' =>
array(
'joinTable' => 'attraction_accessibilities_attractions',
)
);
相反,如果您要使用hasMany through关系,则可以根据需要为表命名。事实上,所谓的“hasMany through”只是两个hasMany关系的连接
如此。如果您为表格限制命名,那么
class Attraction extends AppModel {
public $hasMany = array(
'Restriction'
);
}
class AttractionAccessibility extends AppModel {
public $hasMany = array(
'Restriction'
);
}
class Restrictionextends AppModel {
public $belongsTo = array(
'Attraction ', 'AttractionAccessibility '
);
}