我对 PHP 比较陌生。开始学习 PHP,但后来遇到了 cakePHP,它应该可以加快开发时间。
阅读文档和博客教程后,我仍然不明白命名约定。我想直到我开始做一些例子我才会知道,但是为了让我开始,有人可以向我解释 cakePHP 如何将数据库表关联到控制器/模型层吗?
以下代码是本教程的摘要。它是一个将帖子 id 传递到视图层的控制器方法。数据库表称为“posts”。 $this->Post 指的是 Post 的模型类,它与数据库中帖子的复数形式相关。
public function view($id = null) {
$this->Post->id = $id;
$this->set('post', $this->Post->read());
}
好的,我明白了。然后,在文档中它引用了以下相关性:
VeryBigPerson 和really_big_people
所以看起来这种相关性实际上遵循了英语语义的规则。这是否意味着 cakePHP 有一个隐藏在其工作位置的单数和复数单词列表?例如,我可以在不破坏代码的情况下使用下面的关联吗?
这个和这些 or 男人和男人 or 脚和脚 or 驼鹿和驼鹿 or 鹅和鹅
此外,如果我的数据库中有单数和复数形式的表,它会破坏代码,还是只会关联到复数形式的表?
只是发现它令人困惑......为什么他们不能将命名约定(例如 for like 与前缀相匹配)?
偏转器
CakePHP 使用它的Inflector
class 来确定事物的复数形式。
由于命名约定规定模型名称是单数而表名称是复数,因此它使用变形器应用英语语义/规则来确定复数。
如果您需要一些帮助来理解 Inflector 的输出,您可以使用CakePHP 变形器网站 http://inflector.cakephp.org.
复数示例
Model name: Post
Table name: posts
Model name: User
Table name: users
Model name: Sheep
Table name: sheep
Model name: News
Table name: news
Model name: Radius
Table name: radii
检查 Inflector 站点以确定。
非标准表名
虽然 CakePHP 提供了命名和约定的标准规则集,但它们都不是一成不变的。如果要更改用于特定模型的表的名称,只需在模型中指定表名称即可:
class Thing extends AppModel {
public $useTable = 'somethings';
}
或者,如果您想要一个不使用表格的模型:
class Post extends AppModel {
public $useTable = null;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)