2017-02-01 9 views
0

私の編集フォームの選択オプションの値がdbから正しい値を入力していません。laravel 5.3選択オプション値の正しい値を取得

1対多の関係を持つ2つのモデルがあります。アーティスト名やアルバム

これはalbumcontroller

public function edit($id) 
    { 
     // 
     $album = Album::find($id); 
     $artists = Artist::all(); 
     return view('admin.albums.edit', compact('album', 'artists')); 
    } 

の私の編集方法であり、これは選択オプションを投入するコードである

<div class="form-group"> 
        <label for="artist">Select An Artist:</label> 
        <select class="form-control" id="Artist" name="artist_id"> 
         @foreach($artists as $artist) 
          <option value="{{$artist->id}}">{{ $artist->name }}</option> 
         @endforeach 
        </select> 
       </div> 

このコードは、DB内のすべてのアーティストを取り込むが、選択されていませんそのアルバムと一致する

+0

あなたは中値のHTML 'selected'に置くためにコードを追加する必要があります選択したユーザーと一致するデータベース結果。 – Andy

+0

選択したものを追加すると、リストの最後のものが選択されていますが、データベース内の正しいアーティストの値ではありません。私は正しいアーティストが選択されるようにしたい –

+0

私の答えをあなたの質問にもっと関連させるために、各アルバムには複数のアーティストがいますか?または特定のアーティストのアーティスト1人だけですか? – Birdman

答えて

0

編集機能:

public function edit($id) 
{ 

    $album = Album::find($id); 
    $artists = Artist::all(); 
    $current_artist = $album->artist()->first(); 
    return view('admin.albums.edit', compact('album', 'artists')); 
} 

フォーム:

<div class="form-group"> 
<label for="artist">Select An Artist:</label> 
<select class="form-control" id="Artist" name="artist_id"> 
    @foreach($artists as $artist) 
     <option value="{{$artist->id}}"@if($artist->id == $current_artist->id) selected='selected' @endif>{{ $artist->name }}</option> 
    @endforeach 
</select> 
</div> 
+0

に属しています。アーティストは複数のアルバムを持つことができ、1つのアルバムはアーティスト –

+0

に属しています。そうすれば、私のコードラインはアルバム – Birdman

+0

はいを​​持っているアーティストを選択しますが、もし私がこのアルバムを持っているアーティストを更新したいのであれば、編集フォームであるので、他のアーティストは人を投入していません。 –

0
$album = Album::find($id); 
$artist = $album->artist()->first(); 
$artist_id = $artist ? $artist->id : 0; 
$artists = Artist::all(); 

return view('admin.albums.edit', compact('artist_id', 'artists')); 

<div class="form-group"> 
    <label for="artist">Select An Artist:</label> 
    <select class="form-control" id="Artist" name="artist_id"> 
     @foreach($artists as $artist) 
      <option {{ $artist_id === $artist->id ? 'selected' : '' }} value="{{$artist->id}}">{{ $artist->name }}</option> 
     @endforeach 
    </select> 
</div> 
関連する問題