Laravel 5.1删除关系


Laravel 5.1 Delete relationships

我的模型关系是oneToMany例如:PatientToSample

Patient_Model:

class Patient_Model extends Model implements Jsonable{
    use SoftDeletes;
    protected $table = 'patients';
    public function samples(){
        return $this->hasMany('App'Models'Sample_Model','code','patient_id');
}

}
Sample_Model:
class Sample_Model extends Model{
    use SoftDeletes;
    protected $table = 'samples';
    public function patient(){
        return $this->belongsTo('App'Models'Patient_Model','patient_id','code');
}
}

我想使用delete Patient and Sample函数

public function delete(Request $request){
    $patient = Patient_Model::withTrashed()
        ->where("id",$request->get("id"))
        ->delete();
    return json_encode($patient);
}

但现在只删除患者....

这是一种方法。

public function delete(Request $request){
    $patient = Patient_Model::withTrashed()
        ->find($request->get("id"));
    $patient->samples()->delete();
    $patient->delete();
    return json_encode($patient);
}

还有一种方法可以将关系删除附加到父模型的删除事件,如这里所讨论的。

您是否在迁移中设置了约束?只需在样本表迁移行中写入:

$table->foreign('patient_id')
      ->references('id')
      ->on('patients')
      ->onDelete('cascade');  

查看更多信息:Docs