2017-05-23 11 views
0

私は、選択ボックス "poule"に依存する私のテーブルの雄弁なクエリの結果を表示するためのajaxリクエストを作成しました。Ajax Referese Laravel to object

すべて動作していますが、選択ボックスからpoule_idを選択してajaxリクエストを実行すると、json結果を表示する必要があります。あなたが見ることができるように、関係のモデルから値を表示するので、私は結果をテーブルのforeachループ($ equipe as $ equipe)として表示したいと思います。

更新日:

私のモデルエキップ:私は、テーブルにアクセスすることができ、このよう

class Equipe extends Model 
{ 

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

マイモデルCompetEquipe(私は私のforeachを表示するためにそれを使用)

class CompetEquipe extends Model 
{ 
    public function equipe(){ 

     return $this->belongsTo('App\Equipe' , 'equipe_id'); 

    } 

私のforeachの関係で

<tr> 
     <td> 
      <a href="{!! route('club.show', $equipe->equipe->structure->id) !!}">{{$equipe->equipe->structure->nom_structure}}</a> 
     </td> 
     <td> 
      <a href="{!! route('equipe.show', $equipe->equipe->id) !!}">{{$equipe->equipe->lb_equipe}}</a> 
     </td> 
     <td>{!! Form::text('nb_bonus') !!}</td> 
    </tr> 

10は、実際にこのように私はequipe_id表示することができますが、私は関係で他のモデルへのアクセスにオブジェクトを表示するなど、テーブルに私のforeachのように、結果を表示したいと思います:

@foreach($equipes as $equipe) 
    <tr> 
     <td> 
      <a href="{!! route('club.show', $equipe->equipe->structure->id) !!}">{{$equipe->equipe->structure->nom_structure}}</a> 
     </td> 
     <td> 
      <a href="{!! route('equipe.show', $equipe->equipe->id) !!}">{{$equipe->equipe->lb_equipe}}</a> 
     </td> 
     <td>{!! Form::text('nb_bonus') !!}</td> 
    </tr> 
@endforeach 

誰かが私がしたいことを理解していることを願っています。おかげで、事前の友人でたくさんここ

私のJSON結果:{ "equipes":[{ "equipe_id":1、 "poule_id":1}]}

マイセレクトフィルター検索:

<select id="poule"> 
    @foreach($select_poules as $select_poule) 
     <option value="{{$select_poule->id}}">{{$select_poule->lb_poule}}</option> 
    @endforeach 
</select> 

マイテーブル:

<table id="equipes" class="table table-striped"> 
    <thead> 
     <tr> 
      <th>Club</th> 
      <th>Nom de l'équipe</th> 
      <th>Bonus(+/-)</th> 
     </tr> 
    </thead> 
    <tbody> 
     @foreach($equipes as $equipe) 
     <tr> 
      <td> 
       <a href="{!! route('club.show', $equipe->equipe->structure->id) !!}">{{$equipe->equipe->structure->nom_structure}}</a> 
      </td> 
      <td> 
       <a href="{!! route('equipe.show', $equipe->equipe->id) !!}">{{$equipe->equipe->lb_equipe}}</a> 
      </td> 
      <td>{!! Form::text('nb_bonus') !!}</td> 
     </tr> 
     @endforeach 
    </tbody> 
</table> 

マイコントローラ:

public function searchEquipes(Request $request) 
    { 
     $equipes = []; 

     if($request->has('poule_id')){ 
      $equipes = EquipePoule::where('poule_id',$request->poule_id) 
       ->get(); 
     } 


     return response()->json(['equipes' => $equipes]); 

    } 

マイスクリプト:

<script> 
    $(document).on('change', '#poule', function() { 

     $.ajaxSetup({ 
      headers: { 
       'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') 
      } 
     }); 

     $.ajax({ 
      type: 'GET', 
      dataType: "json", 
      url : '/licences/public/search/equipes', 
      data : { 
       poule_id : $('#poule').val() 
      }, 
      success:function(data){ 

       $('#equipes').empty(); 
       for (var i = 0; i < data.equipes.length; i++) { 
        $('#equipes').append('<tr><td>'+data.equipes[i].equipe_id+'</td></‌​tr>') 
       } 

      }, 
      timeout:10000 
     }); 

    }); 
</script> 
+0

jsonの外観はどうですか?ご質問に追加できますか? – ochhii

+0

もちろん!私は今投稿を更新しました –

+0

私はコントローラを追加しました –

答えて

1

あなたはjQueryのreplaceWith AJAX要求の応答を使用して、テーブルの内容を交換すること。 jQueryの成功関数を少し変更する必要があります。

success: function(data) { 
      //Build the row data as you wish to display it 
      var rowData = "" 
      $.each(team["equipes"][0], function(i, value) { 
       var rowData += $("#equipes").append("<td>"+value+"</td>"); 
       }) 
      $("#equipes").replaceWith("<tr>"+rowData+"</tr> 

      $("#equipes").append("</tr>"); 
      } 

これにより、最初のテーブルのデータが選択したテーブルのデータに置き換えられます。

+0

いいえいいえ同じ値を同じ場所に置いてforeachと同じ結果を表示したいと思います{{$equipe->equipe->structure->nom_structure}}

+0

私のforeach結果の変更結果は、選択したpoule_idで同じエリアに同じ値を表示することは可能ですか? –

+0

さて、わかりました。 jsonでさらに情報を出力する必要があります。$ equipe-> equipe-> structure-> nom_structureと$ equipe-> equipe-> lb_equipeは、jsonでそれらを表示したい場合、jsonをパススルーする必要がある値です。これらの値をコントローラのjsonレスポンスに追加する必要があります。 – ochhii