2017-05-04 11 views
0

私の間違いを見つけて理解するのに苦労しています。私はテーブルの支払いがあり、私は学生のページにこのデータを表示したい(student_idを取得することによって)。 student_idでデータを取得する必要があります。構文クエリでのエラーアクセス違反Laravel 5.1

payments{id, student_id, course_id, transfer_amount, payment_type_id, is_paid, date} 

しかし、この間違いは表示され続けます。私の間違いはどこにあるの?みんな助けてください。助けてください。ここで がStudentsController.php

はここ
public function payments($id, Request $request) { 
     $student = Student::findOrFail($id); 
     $payment = Payment::where('student_id', $id)-> get(); 
     $student->has('payments')->where('student_id', $request->id)->get(); 
     return view('students.groups', compact('student', 'payment')); 

    } 

である私のモデルであるStudent.php

public function payments() 
    { 
     return $this->belongsToMany('App\Payment','payments', 'student_id'); 
    } 

こちら>payments.blade.phpビューの学生

@forelse ($student->payments as $key => $payment) 
          <tr class="center aligned"> 
           <td>{{++$key}}</td> 
           <td>{{$payment->course_id}}</td> 
           <td>{{$payment->payment_type_id</td> 
           <td>{{$payment->transfer_amount}}</td> 
           <td> 
           @if($payment->is_paid) 
           <p style="color: green;">Paid</p> 

           @else <p style="color: red">Not Paid</p> 
           @endif 
           </td> 
        @empty 
         <tr class="center aligned"> 
         <td colspan="12" class="ui red header">No data</td> 
         </tr> 
        @endforelse 

ですエラー一意のテーブル/エイリアスが表示されません。これはあなたを助け

public function payments($id, Request $request) { 
     $student = Student::findOrFail($id); 
     $payment = Student::with('payments')->where('id', $id)->get(); 

     return view('students.groups', compact('student', 'payment')); 

    } 

希望:

答えて

0

は、私のようなあなたのクエリを更新することができると思います。

UPDATE 2017年5月5日 は、私はあなたがpayments.blade.php

@forelse ($student->payments as $key => $payment) 
    <tr class="center aligned"> 
     <td>{{++$key}}</td> 
     <td>{{$payment->course_id}}</td> 
     <td>{{$payment->payment_type_id}}</td> 
     <td>{{$payment->transfer_amount}}</td> 
     <td> 
     @if($payment->is_paid) 
      <p style="color: green;">Paid</p> 

     @else <p style="color: red">Not Paid</p> 
     @endif 
    </td> 
@empty 
<tr class="center aligned"> 
    <td colspan="12" class="ui red header">No data</td> 
</tr> 
@endforelse 
+0

ありがとう私は今これを試してみます.. – Armani

+0

いいえ、それは正確なエラーを提供していません@AddWebソリューションPvt Ltd – Armani

0

更新すべきだと思うあなたが本当に変数$paymentを持っている必要がありますか?ビューのどこかどこででもこれを使いましたか?ない場合、これはおそらく正しい雄弁な構文は以下となります。上記の例で

public function payments($id, Request $request) { 
    $student = Student::with('payments')->where('student_id', $id)->firstOrFail(); 

    return view('students.groups', compact('student')); 
} 

、それは$idのIDを持つユーザーを検索し、モデルで定義されています関係を使用して、そのpayments詳細が含まれています。

あなたは常に、少なくとも1支払いは、あなたがそうのような構文にhas('payments')を追加することができたしなければならない学生を検証する必要がある場合:

public function payments($id, Request $request) { 
    $student = Student::has('payments')->with('payments')->where('student_id', $id)->firstOrFail(); 

    return view('students.groups', compact('student')); 
} 

を学生が記憶された少なくとも1の支払いを持っている場合にのみ返されますデータベースに格納されます。

希望すると助かります!

+0

ええ私は '$ student-> payment as $ key => $ payment' view as counter – Armani

+0

私はコントローラーに '$ payment'を追加する必要はないと思うので、ビューで新しい' $ payment'変数をループのためだけに作成しているので、実際には必要ありませんコントローラのメソッドで追加する –

関連する問題