2016-10-28 90 views
0

我一直在苦苦挣扎了一段时间,是一位经验不多的新开发人员。所以我正在研究一个处理药物和疾病的项目。存在多对多的关系。Laravel-处理数据透视表中的多个复选框

药物模型

public $timestamps=false; 

public function disease() 
{ 
    return $this->belongsTo('App\Disease'); 
} 

疾病模型

public $timestamps=false; 

public function drug() 
{ 
    return $this->belongsTo('App\Drug'); 
} 

我想创建一个使用形式在Disease_Drug透视表的关系。 form.blade.php

<label>Disease</label> 
    <select class="form-inline input-sm " name="disease" id="disease"> 
     @foreach($diseases as $key => $disease) 
      <option value="{{$disease->id}}"> {{$disease->name}}</option> 
     @endforeach 
    </select> 

<label>Drugs</label><br> 
     @foreach($drugs as $key=>$drug) 
      <input type="hidden" name="drug[]" value="0" /> 
      <input class="checkbox-inline" type="checkbox" name="drug[]"value="{{ $drug->id }}" id="{{ $drug->id }}">{{ $drug->name }} <br> 
     @endforeach 

    <button type="submit" class="btn btn-primary">Submit</button> 

我有一个disease_drug控制器

public function form() 
{ 
    $diseases = Disease::all(); 
    $drugs = Drug::all(); 

    return view('admin.form') 
     ->with('diseases', $diseases) 
     ->with('drugs', $drugs); 

} 
public function store(Request $request) 
{ 
    $diseases = $request->get('diseases.ids'); 
    $drugs = $request->get('drugs.id', []); // Empty array by default if no checkbox checked. 
    $diseases->drugs()->sync($request->input('drugs', [])); 
} 

我无法保存在数据库中的结果。我对此非常无能,所以善意地帮助我。

回答

0

如果药物与疾病之间的关系是多对多那么你的关系函数应为:

药物模型

public function disease() 
{ 
    return $this->belongsToMany('App\Disease'); 
} 

疾病模型

public function drug() 
{ 
    return $this->belongsToMany('App\Drug'); 
} 

您正在使用belongsTo()函数,而不是。