2010-09-27 48 views
0

只需调试MVC开发和蛋糕实现,所以我对表命名和ID引用感到困惑。使用PHPcake烘烤正确的数据库命名

我在Assets中有一个名为Assets和Sotered的表是asset_status_id字段,它是对表的引用Asset_Statuses此表是资产可以在任何时间处于可能状态的简单列表(Active, Inactive,Sold,Maintenace等)我已经选择使用这个列表作为a)我想我需要添加更多的选项在某些时候b)我有一个'序列'字段在这张表中,所以我可以控制他们将在任何下拉菜单中排序。

'Cake Bake'ing似乎看到名为Asset_Statuses的表,表示它存在描述Assets表和不存在的状态表之间的关系。现在我知道你的想法只是称为表格雕像吧?但是我有两个“状态”表,我想使用,例如Domain_Status,当然不会使用相同的状态列表。

那么我应该用什么命名约定来使这一切都很容易?

回答

0

我不确定资产状态的复数是资产状态(您应该检查),而且表格需要小写,所以asset_states而不是Asset_States。但是您可以在模型中使用完全不同的表格。检查this。所以基本上就是创建一个模型,并按照你的喜好命名。即AssetState并把:

var $useTable = 'asset_states'; 

我觉得你不会有问题。只是要确保在你的关系属于关联,的hasMany您提供正确的类名即:

var $belongsTo = array(
    'AssetState' => array(
     'className' => 'AssetState' //Most important 
    ) 
); 
+0

$ useTable不是特别需要创建新表时。我会说当你使用遗留数据库构建一个系统时,它保持最佳状态。另外需要注意的是,所有型号都是单数型的,不是像您所建议的那样复数。 – dogmatic69 2010-09-28 20:18:28

+0

真实模型是单数,这是一个错字。但是这个人需要的是使用asset_statuses表,因为状态表已经被使用了。事实上,这个问题非常混乱,所以我和你都在猜测:)我会改变模型的命名方式(尽管它不是必须的,因为它是一个例子)。 – 2010-09-28 21:37:52

+0

也说className是最重要的是不正确的,代码$ belongsTo = array('AssetState');假设在APP/models目录中有一个asset_state.php模型(或db中的asset_states表),那么重要的是使用插件/非约定时的工作原理 – dogmatic69 2010-09-29 13:51:37

0

你可能只是最好使用一个状态表,因为它可以遍布使用,而不是只为资产。这可以轻松地添加模型字段,因此它的id,模型,状态。

那么你的加入只是一个条件。

class Asset extends AppModel{ 
    var $belongsTo = array(
     'Status' => array(
      'className' => 'Status' // not needed with the proper conventions and not in a plugin, 
      'conditions' => array('Status.model' => 'Asset') 
     ) 
    ); 
} 

可以使用行为来在beforeSave

作为一个侧面说明模型字段的设置自动化,所有的表应该全部小写,不是你正在使用的有趣案例。这可能是事情没有按照他们应有的方式工作的原因。