0 レビュー
1 回答
php-laravel5.1で関連する2つのテーブルを挿入する方法
情報をinformation table
に挿入してから、 information_id
をadvertise tableに挿入しようとしています。
、ワンステップで
次のエラーが発生します:
SQLSTATE [23000]:整合性制約違反:1452
子行を追加または更新できません:外部キー制約が失敗します( `baroot_laravel`.`advertise`、CONSTRAINT` advertise _ information_id _foreign` FOREIGN KEY( `information_id`)REFERENCES `information`( `id`))(SQL:` advertise`( `jobs_sub_category_id`、` area_id`、 `description`、` updated_at`、 `created_at`)に挿入値(、、、 2015-10-18 07:04:13、 2015-10-18 07:04:13))
これが私のコードです:
Advertise_Model:
class Advertise_Model extends Model
{{
保護された$table='アドバタイズ';
protected $ fillable = ['jensiat'、'information_id'、'wage_range_id'、'jobs_sub_category_id'、'jobs_type_id'、'age_range_id'、'experience_id'、'confirmed'、'description'、'city_id'、 'area_id'、'academic_degree_id'];
パブリック関数Information()
{{
$ this-> hasOne('App \ Information_Model'、'information_id'、'id');を返します。
}
}
Information_Model:
class Information_Model extends Model
{
protected $table = 'information';
protected $fillable = ['person_name','company_name','company_phone','person_mobile','location_id','person_id','email','website'];
}
そしてdbコントローラーへの保存:
public function AdminStore(Request $request)
{
Advertise_Model::create($request->all())->with(Information_Model::create($request)->all());
//Information_Model::create($request->all());
//Advertise_Model::create($request->all());
return view('Administrator.Advertise.index');
}
編集済み:
移行のアドバタイズ:
Schema :: create('advertise'、function(Blueprint $ table){
$ table-> charset ='utf8';
$ table-> collate ='utf8_general_ci';
$ table-> incremental('id');
$ table-> tinyInteger('jensiat');
$ table-> integer('information_id')-> length(10)-> unsigned();
$ table-> integer('wage_range_id')-> length(10)-> unsigned();
$ table-> integer('jobs_sub_category_id')-> length(10)-> unsigned();
$ table-> integer('jobs_type_id')-> length(10)-> unsigned();
$ table-> double('details_views')-> length(10)-> unsigned();
$ table-> integer('age_range_id')-> length(10)-> unsigned();
$ table-> integer('experience_id')-> length(10)-> unsigned();
$ table-> tinyInteger('確認済み');
$ table-> text('description');
$ table-> integer('admin_id')-> length(10)-> unsigned();
$ table-> integer('city_id')-> length(10)-> unsigned();
$ table-> integer('area_id')-> length(10)-> unsigned();
$ table-> double('view');
$ table-> integer('academic_degree_id')-> length(10)-> unsigned();
$ table-> RememberToken();
$ table-> timestamps();
});
Schema :: table('advertise'、function($ table){
$ table-> forum('information_id')-> reference('id')-> on('information');
});
情報の移行:
Schema::create('information', function (Blueprint $table) {
$table->charset = 'utf8';
$table->collate = 'utf8_general_ci';
$table->increments('id');
$table->string('person_name');
$table->string('company_name');
$table->string('company_phone');
$table->string('person_mobile');
$table->integer('location_id')->length(10)->unsigned();
$table->integer('person_id')->length(10)->unsigned();
$table->string('email');
$table->string('website');
$table->rememberToken();
$table->timestamps();
});
わからない
0
レビュー
答え :
解決策:
このようにすることができます。
// Insert Information
$InformationCreate = new Information_Model;
$InformationCreate->person_name = $Request->person_name;
$InformationCreate->company_name = $Request->company_name;
$InformationCreate->company_phone = $Request->company_phone;
$InformationCreate->person_mobile = $Request->person_mobile ;
$InformationCreate->location_id = $Request->location_id;
$InformationCreate->person_id = $Request->person_id;
$InformationCreate->email = $Request->person_id;
$InformationCreate->website = $Request->email;
$InformationCreate->save();
情報を保存したら、$ InformationCreate-> idを使用して、その情報レコードの作成中に使用されたIDを取得できます。
// Create Advertise
$AdvertiseCreate = new Advertise_Model;
$AdvertiseCreate->jensiat = $Request->jensiat;
$AdvertiseCreate->information_id = $InformationCreate->id;
もちろん、これを行うにはもっと良い方法があるかもしれませんが、それはあなたのために働くはずです。
わからない
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。