2017-03-15 172 views
1

歡迎!我做了一個簡單的應用程序,用戶有自己的筆記。我正在使用外鍵和關係(belongsTo,hasMany)。當我添加新的筆記,並選擇它屬於哪個用戶可以,但是當我嘗試更新它時除了用戶以外更改所有。laravel - 數據庫未更新

試點模式:

class Pilot extends Model 
    { 
     protected $table = 'pilots'; 
     /** 
     * The attributes that are mass assignable. 
     * 
     * @var array 
     */ 
     protected $fillable = [ 
      'name', 'phone', 'email', 
     ]; 

     public function note() { 
      return $this->hasMany(Note::class); 
     } 
    } 

注型號:

class Note extends Model 
{ 
    protected $table = 'notes'; 
    /** 
    * The attributes that are mass assignable. 
    * 
    * @var array 
    */ 
    protected $fillable = [ 
     'data', 'zadanie', 'uwagi', 'pilot_id', 
    ]; 

    public function pilot() { 
     return $this->belongsTo(Pilot::class); 
    } 
} 

注意控制器(儲存編輯和更新功能)

public function store(Request $request) 

{ 

    $this->validate($request, [ 

     'data' => 'required', 

     'zadanie' => 'required', 

     'uwagi' => 'required', 





    ]); 


    $note = new Note(); 

    $note->data = $request->data; 
    $note->zadanie = $request->zadanie; 
    $note->uwagi = $request->uwagi; 
    $note->pilot_id = $request->pilots; 


    // Commit to the database 

    $note->save(); 


    return redirect()->route('uwagi.index') 

        ->with('success','Uwagi dodane poprawnie'); 

} 
public function edit($id) 

{ 

    $note = Note::find($id); 
    $pilots = Pilot::all(); 

    return view('uwagi.edit',['note'=>$note, 'pilots'=>$pilots]); 

} 
public function update(Request $request, $id) 

{ 

    $this->validate($request, [ 

     'data' => 'required', 

     'zadanie' => 'required', 

     'uwagi' => 'required', 

     'pilot_id' =>'required', 

    ]); 


    Note::find($id); 
    $note->data = $request->data; 
    $note->zadanie = $request->zadanie; 
    $note->uwagi = $request->uwagi; 
    $note->pilot_id = $request->pilots; 


    // Commit to the database 

    $note->save(); 

    return redirect()->route('uwagi.index') 

        ->with('success','Zaktualizowano poprawnie'); 

} 

編輯刀片:

<div class="panel panel-transparent"> 
    {!! Form::model($note, ['method' => 'PATCH','route' => ['uwagi.update', $note->id]]) !!} 
<div class="panel-heading"> 
<div class="panel-title">Dodaj Uwagę 
</div> 
</div> 
<div class="panel-body"> 
<h3>Wybierz ucznia oraz dodaj do niego uwagę</h3> 
<p>Wszystkie pola są wymagane</p> 
<br> 
<div> 


</div> 
</div> 
</div> 

</div> 
<div class="col-sm-7"> 

<div class="panel panel-transparent"> 
<div class="panel-body"> 
{!! Form::open(array('route' => 'uwagi.store','method'=>'POST')) !!} 
<p>Dane</p> 

    <label>Pilot</label> 
    <select class="form-control" id="pilot" name="pilots"> 
    @foreach($pilots as $pilot) 
     <option value="{!! $pilot->id !!}"> 
     {!! $pilot->name !!} 
     </option> 


    @endforeach 
    </select> 
    </div> 

<div class="row clearfix"> 
<div class="col-sm-6"> 
<div class="form-group form-group-default required"> 
<label>Data</label> 
    {!! Form::date('data', null, array('placeholder' => 'Data','class' => 'form-control ')) !!} 

</div> 
</div> 
<div class="col-sm-6"> 
<div class="form-group form-group-default required"> 
<label>Zadanie</label> 
{!! Form::text('zadanie', null, array('placeholder' => 'Zadanie','class' => 'form-control ')) !!} 
</div> 
</div> 

<div class="col-sm-6"> 
<div class="form-group form-group-default required"> 
<label>Uwagi</label> 
{!! Form::textarea('uwagi', null, array('placeholder' => 'Uwagi','class' => 'form-control ')) !!} 
</div> 
</div> 
</div> 
</div> 



<br> 


<button class="btn btn-success btn-cons m-b-10" type="submit"><i class="fa fa-floppy-o" aria-hidden="true"></i> <span class="bold">Dodaj</span></button> 
<a href="{{ route('pilot') }}"><button class="btn btn-info btn-cons m-b-10" type="button"><i class="fa fa-arrow-left"></i> <span class="bold">Powrót</span> 
</button></a> 
     {!! Form::close() !!} 
</div> 

它改變了除了飛行員以外的所有東西。

問候並感謝您的幫助

+0

您是否關閉了第二個表格?我認爲你不需要指定方法,因爲它是'model-binding'。 –

+0

你的更新功能在哪裏? – EddyTheDove

+0

@eddythedove檢查更新 – tomczas

回答

0

在您的更新函數中,您沒有獲取註釋對象。你做

Note::find($id); 

做到這一點,而不是

$note = Note::find($id); 
$note->pilot_id = $request->pilots; 
$note->save(); // $note->update(); 

而且,你的看法,你Form::model()打開窗體兩次,一次(你不要關閉),後來與Form::open()

您需要單獨關閉各形式

{!! Form::close() !!} 

而且,你所定義的select只有一次,形式::開放的內部。你需要在Form :: model()中添加它。

<select class="form-control" id="pilot" name="pilots">