语法查询Laravel 5.1中的错误访问冲突

语法查询Laravel 5.1中的错误访问冲突

问题描述:

我无法找到并理解我的错误。我有桌面付款,我想在我的学生页面上显示这些数据(通过获取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')); 

    } 

希望这有助于你。

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解决方案私人有限公司 – Armani

你真的需要有可变$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

是的,因为你看到我用'$学生 - >付款为$ key => $ payment'在查看为计数器 – Armani

+0

我想你不必在控制器中添加'$ payment',那么在视图中,你只是为循环创建一个新的'$ payment'变量,所以它并不需要被添加到控制器的方法中 –