2017-03-15 12 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

2番目のフォームを閉じましたか?私はあなたが 'モデル結合 'なのでメソッドを指定する必要はないと思います。 –

+0

更新機能はどこにありますか? – EddyTheDove

+0

@eddythedove check update – tomczas

答えて

0

あなたの更新機能では、ノートオブジェクトを取得していません。あなたはこの代わりに

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

はまた、あなたのビューでは、あなたはForm::open()と後で(あなたが閉じていない)とForm::model()で1回、2回フォームを

Note::find($id); 

開いてくださいます。

あなたはまた、あなたがフォーム::オープンの内側に、一度だけselectを定義し

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

で個別に各フォームを閉じる必要があります。 Form :: model()の内部にも追加する必要があります。

<select class="form-control" id="pilot" name="pilots"> 
関連する問題