複数レベルの HasMany 関係を持つモデルのテーブルに挿入しようとしています。ここまでの内訳です
Customer->(HasMany)->Members->(HasMany)->Incomes
ただし、Incomes テーブルに挿入しようとすると、Members テーブルからの外部キーが Incomments に運ばれないという「Not null 違反」が発生します。最も一般的な問題は $_has_many および $_belongs_to プロパティを台無しにすることですが、私が知る限り、それらは問題ないと言えます。さらに、Member テーブルに挿入するだけで問題なく動作するので、少なくとも最初のレイヤーでは動作していることがわかります! 私が考えることができる唯一のことは、それが2番目のレベルダウンであるため、それが原因で台無しになっている場合です. これが私のコードです:
関係リンク (メンバー)
protected static $_has_many = array(
'incomes' => array(
'key_from' => 'id',
'model_to' => 'Model_Income',
'key_to' => 'member_id',
'cascade_save' => true,
'cascade_delete' => true,
),
);
関係リンク (収入)
protected static $_belongs_to = array(
'member' => array(
'key_from' => 'member_id',
'model_to' => 'Model_Member',
'key_to' => 'id',
'cascade_save' => true,
'cascade_delete' => true,
),
);
コントローラーコード
// code to set up $customer
$customer->members[] = Model_Member::forge();
// set $member_vals here
$customer->members[0]->set($member_vals);
$customer->members[0]->incomes[] = Model_Income::forge();
// set $income_vals here
$customer->members[0]->incomes[0]->set($income_vals);
$customer->save();