2016-10-28 94 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()函數,而不是。