2017-06-08 80 views
1

我有一個ApplicantpendingJob,凡我申請人模型有cnic主鍵,凡pendingJobapplicant_id並使其指向Applicant模型CNIC列外鍵之間有許多關係。Laravel紀錄關係問題

申請人型號:

protected $primaryKey = 'cnic'; 

public function pending_jobs() { 
    return $this->hasMany('App\PendingJobs', 'applicant_id'); 
} 

PendingJob型號:

public function applicant() { 
    return $this->belongsTo('App\Applicant', 'applicant_id'); 
} 

我插入紀錄申請人,如:

$req = new \App\Applicant; 
$req->full_name = $request->get('full_name'); 
$req->cnic = $request->get('cnic'); 
$req->mobile_number = $request->get('mobile_number'); 
$req->save(); 

然後在記錄:

$reqr = new \App\PendingJob; 
$reqr->applicant_id = $request->get('cnic'); 
$reqr->job_type = 'residence'; 
$reqr->status = 'pending'; 
$reqr->save(); 

記錄保存和cnic這是Applicantprimary key和'這是指向Applicant小號applicant_idcnicPendingjob來一樣。

的關係,不加載,從phpmydamin手冊記錄的插入工作正常。

+0

你可以分享申請人和pendingJob表的列名? – kunal

+0

發佈您的遷移。並請解釋「關係不加載」部分 –

回答

1

的工作流程應該是這樣的:

$reqr = new \App\PendingJob; 
$reqr->job_type = 'residence'; 
$reqr->status = 'pending'; 

$req = new \App\Applicant; 
$req->full_name = $request->get('full_name'); 
$req->cnic = $request->get('cnic'); 
$req->mobile_number = $request->get('mobile_number'); 

$reqr->applicant()->associate($req); 

$reqr->save(); 

來源:https://laravel.com/docs/5.4/eloquent-relationships#the-save-method

另外,我注意到,你對申請人的主鍵是cnic所以你們的關係應該根據指定local_key Laravel文檔:

App\Application

public function pending_jobs() { 
    return $this->hasMany('App\PendingJobs', 'applicant_id', 'cnic'); 
} 

App\PendingJob

public function applicant() { 
    return $this->belongsTo('App\Applicant', 'applicant_id', 'id'); 
}