このモデルからテーブルを生成する場合:
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 を使用しません。これを行う方法はありますか?