I want to add insert data in three different tables at the same time. But once the data is inserted in the first table, I need to get that id and continue with that to insert data in the other two table. These are the applicant table, language table (each applicant may know more than one language) and skills table (also one or many).
Below is the code that I have been trying:
Models:
class Apply extends Eloquent {
protected $table = 'application';
protected $fillable = ['user_id', 'gender', 'dob', 'ic', 'marriage_status', 'phone', 'city', 'street', 'course', 'university',
'academic_degree', 'uni_start_date', 'uni_end_date', 'addinfo', 'working_company', 'position', 'start_date', 'end_date', 'reason'];
public function lang() {
return $this->hasMany('Lang');
}
}
class Lang extends Eloquent
{
protected $table = 'language';
public function apply(){
return $this->belongsTo('Apply');
}
}
class Skills extends Eloquent
{
protected $table = 'skills';
public function apply(){
return $this->belongsTo('Apply');
}
}
Controller:
public function createcv() {
$input = Input::all();
$rules = array('ic' => 'required',
'phone' => 'required',
'course' => 'required');
$v = Validator::make($input, $rules);
if ($v->passes()) {
$apply = Apply::create(array('user_id' => Auth::user()->id, 'gender' => $input['gender'],
'dob' => $input['dob'], 'ic' => $input['ic'], 'marriage_status' => $input['mstatus'],
'phone' => $input['phone'], 'city' => $input['city'], 'street' => $input['street'],
'course' => $input['course'], 'university' => $input['institution'],
'academic_degree' => $input['adegree'], 'uni_start_date' => $input['uni-startdate'],
'uni_end_date' => $input['uni-enddate'], 'addinfo' => $input['addinfo'],
'working_company' => $input['jobinstitution'], 'position' => $input['jobposition'],
'start_date' => $input['startdate'], 'end_date' => $input['enddate'], 'reason' => $input['reason']));
$apply->save();
$app_id = $apply->id;
$lang = Lang::create(array('app_id' => $app_id, 'lang' => $input['lang1'],
'reading' => $input['read1'], 'writing' => $input['write1'],
'speaking' => $input['speak1'], 'institution' => $input['inst1']
));
$lang->save();
$skills = Skills::create(array('app_id' => $app_id, 'prog_name' => $input['prog1'],
'level' => $input['level1'], 'institution' => $input['instprog1']));
$skills->save();
return Redirect::to('home');
} else {
return Redirect::to('create-cv')->withInput()->withErrors($v);
}
}