我已经阅读了一段时间的Nette教程,用于数据库选择等,但我仍然不明白,Nette如何知道,什么是外键和什么不是。我需要给它下定义吗?如果是这样的话,是怎么做的?文件里什么都没有。
根据这个文档,我不需要定义外键。由于我已经习惯了Java,这对我来说听起来有点奇怪。
Nette甚至会生成数据库吗?(到目前为止,我不这么认为)。
发布于 2017-04-09 14:33:27
Nette\Database不生成数据库,它检查数据库并发现外键参见ActiveRow文档,特别是M:1关系的描述
有一个关系是一个常见的用例。书只有一个作者。书上只有一个翻译。相关行的获取主要是通过
ref()方法实现的。Ref()方法接受两个参数:目标表名称和源连接列。见示例: $book = $context->table('book')->get(1);$book->ref('author','author_id'); … 这一切都很好,但有点麻烦,你不觉得吗?数据库已经包含了外键定义,那么为什么不自动使用它们呢?我们就这么做吧! 如果调用不存在的属性,则ActiveRow尝试将调用的属性名称解析为“有一个”关系。强调获取该属性的方法与只使用一个参数调用ref()方法相同。我们将把唯一的论点称为关键。密钥将被解析为特定的外键关系。传递的键与行列匹配,如果匹配,则使用匹配列上定义的外键从相关目标表获取数据。
您可以在源代码中看到它是如何在内部工作的。
https://stackoverflow.com/questions/43307533
复制相似问题