AR関係にこれを実装しようとしています: http://www.yiiframework.com/wiki/19/how-to-use-a-single-form-to-collect-data-for-two-or -more-models/ そしてやっていること:
public function actionCreate()
{
$application = new Application;
$company = new AppCompany;
// Uncomment the following line if AJAX validation is needed
// $this->performAjaxValidation($model);
if(isset($_POST['Application'], $_POST['AppCompany']))
{
$application->attributes=$_POST['Application'];
$company->attributes=$_POST['AppCompany'];
$valid=$application->validate();
$valid=$company->validate() && $valid;
if($valid)
{
if($application->save(false))
{
$company->applicant_id = $application->id;
$company->save(false);
$this->redirect(array('view','id'=>$application->id));
}
}
}
$this->render('create',array(
'application'=>$application,
'company'=>$company,
));
}
次に、新しいアプリケーションを作成してすべての有効なデータを入力しようとすると、このデータは両方のテーブルに正常に保存されます。しかし、いくつかのフィールドを空のままにしておくと (それらが必要な場合)、次のエラーが発生します: クラス AppCompany のオブジェクトを検証時に文字列に変換できませんでした。
私の間違いを教えてください。