わかりましたので、このサイトと Google で多くの検索を行い、いくつかの回答を見つけましたが、どれもうまくいきませんでした。@ichikaway のサイトとテスト手順もチェックしました。そこにあるものでさえ、私にはうまくいきません。また、「if」ステートメントで保存/更新をラップすると、常に true が返されるため、実行できるデバッグはあまりありません。
以下は、私を解決策に導くのに役立つ関連コードです。ありがとう!
MyClass モデル定義
class MyClass extends AppModel
{
var $name = 'MyClass';
var $useTable = 'my_classes';
//var $belongsTo = array();
//var $hasMany = array();
var $useDbConfig = 'mongo';
var $mongoSchema = array(
'_id' => array('type' => 'integer', 'primary' => true, 'length' => 40),
'children' => array(
'child_id' => array('type' => 'integer','length' => 40),
'child_first_name' => array('type'=>'string'),
'child_last_name'=>array('type'=>'string'),
'active'=>array('type' => 'integer', 'length' => 1),
),
'teachers' => array(
'teacher_id' => array('type' => 'integer','length' => 40),
'teacher_first_name' => array('type'=>'string'),
'teacher_last_name'=>array('type'=>'string'),
'primary'=>array('type' => 'integer', 'length' => 1),
'active'=>array('type' => 'integer', 'length' => 1),
),
'name' => array('type'=>'string'),
'active'=>array('type' => 'integer', 'length' => 1),
'created'=>array('type'=>'datetime'),
'modified'=>array('type'=>'datetime'),
);
}
私のStudentsControllerからのコード
$currentClass = $this->data["MyClass"]["id"];
$classtoedit = $this->MyClass->findById($currentClass);
$addChildToClass = array(
'MyClass' => array('id'=>$currentClass,
'$push' =>
array('children' =>
array('child_id'=>$newChildId,
'child_first_name'=>$first_name,
'child_last_name'=>$last_name,
'active'=> 1)
)
)
);
print_r($addChildToClass);
$this->MyClass->id = $currentClass;
if($this->MyClass->save($addChildToClass))
{
$this->Session->setFlash("Your child has been successfully added.");
}
編集: PHP 用語だけで必要な機能を得ることができましたが、CakePHP で正しい方法でやりたいと思っています。私の後に来る可能性のある他のメンテナーのために、この 2 つを一緒に混ぜたくありません。ご参考までに