2017-05-04 1 views
0

J'ai du mal à trouver et à comprendre mon erreur. J'ai des paiements de table et je veux montrer ces données sur la page de mes étudiants, (en obtenant student_id). Il devrait obtenir les données par student_id.Syntaxe Erreur d'accès à l'erreur dans la requête Laravel 5.1

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

Mais cette erreur persiste. Où est mon erreur, les gars s'il vous plaît aider. Toute aide est appréciée. est ici 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')); 

    } 

Voici mon modèle Student.php

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

voici les étudiants de vue>de 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 

error Table et alias non uniques apparaissant .

Répondre

0

Je pense que vous pouvez mettre à jour votre requête comme:

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')); 

    } 

espoir que cela vous aide.

MISE À JOUR 05/05/2017 Je pense que vous devriez mettre à jour 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

merci je vais essayer maintenant .. – Armani

+0

non, cela ne fonctionne pas donnant l'erreur exacte @AddWeb Solution Pvt Ltd – Armani

0

Avez-vous vraiment besoin d'avoir la $payment variable? L'avez-vous utilisé quelque part ou n'importe où dans la vue? Sinon, ce sera probablement la bonne syntaxe éloquente:

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

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

Dans l'exemple ci-dessus, il est à la recherche d'un utilisateur avec l'identifiant de $id et comprennent ses payments détails à l'aide des relations qui est définie dans le modèle.

Si vous devez valider l'étudiant doit toujours a au moins 1 paiement, vous pouvez ajouter has('payments') à la syntaxe comme ceci:

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

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

Ceci renvoie si l'étudiant a au moins 1 paiement stocké dans la base de données.

J'espère que ça aide!

+0

ouais comme vous le voyez, j'ai utilisé '$ student-> paiements comme $ key => $ payment' dans le voir comme compteur – Armani

+0

Je suppose que vous n'avez pas besoin d'ajouter '$ payment' dans le contrôleur alors, dans la vue, vous créez une nouvelle variable' $ payment' SEULEMENT pour la boucle, donc il n'a pas vraiment besoin de être ajouté dans la méthode du contrôleur –