从该模型生成表时:
function init()
{
parent::init();
$this->addField('person_id')->refModel('Model_Person')->mandatory(true);
$this->addField('username')->mandatory(true);
$this->addField('password')->mandatory(true);
}
我得到这个 SQL 语句:
create table users (
id int auto_increment not null primary key,
person_id varchar(255),
person int(11),
username varchar(255),
password varchar(255));
在这个 SQL 语句中,我得到了与教程中所说的相反的内容:
使用以“_id”结尾的字段名称调用 refModel 实际上会创建 2 个字段定义。例如,“publisher_id”将被定义为整数并具有“reference”类型,并且还将添加一个字段“publisher”,具有完全相同的属性 - 但它将是一个计算字段并将使用子选择确定价值。
我想知道:
- 生成的 SQL 语句是否正确?
- 这个 VARCHAR 附加生成的字段有什么作用?(我做了CRUD,当添加新记录时,这个字段的值被保存为NULL)。
- 使用时
refModel()
,如果我只使用模型名称('Person'),我得到一个错误(无法包含 Person.php),我必须使用完整的类名('Model_Person')。这个可以吗?我不应该只能使用型号名称吗? mandatory()
不使用NOT NULL,有没有办法做到这一点?