Laravel 5.2如何通过laravel雄辩模型加入三个表

问题描述:

我有三个模型Laravel 5.2如何通过laravel雄辩模型加入三个表

1. user 
2. course 
3. fee 

,其中用户模式与课程表连接与一对多的关系,当然模型与费用表连接与一对一关系。

问题是,我必须找到用户选择课程的所有费用总和,并且那里的用户完成的stauts应该是1.如何为它编写查询?

课程模式:

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Course extends Model 
{ 
    protected $table='courses'; 
    protected $fillable = ['name','date','publication_status']; 


    public function fee(){ 
     return $this->hasOne('App\Fee','course_id', 'id'); 
    } 
     public function user() 
    { 
     return $this->belongsToMany('App\User','course_id','id'); 
    } 
} 

用户模型:

<?php 

namespace App; 

use Illuminate\Foundation\Auth\User as Authenticatable; 

class User extends Authenticatable 
{ 
    protected $table='users'; 
    protected $fillable=['name','email','phone','course_id']; 



      public function courses() 
    { 
     return $this->hasMany('App\Course','id','course_id'); 
    } 
} 

费型号:

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Fee extends Model 
{ 
     protected $table='fees'; 
    protected $fillable = ['fee','course_id']; 

    public function course() 
    { 
     return $this->belongsTo('App\Course', 'course_id', 'id'); 
    } 
} 

如果有人知道的解决方案,请提供一个。

我想你可以找到用户第一:

if(User::find($id)->complete_status == 1){ 
    $user = User::find($id); 
} 

这之后,您将返回该用户所有的课程:

$courses = $user->courses; 

最后,你将实现一个foreach语句来回报每课程费用:

foreach($courses as $course){ 
    $feeSum += $course->fee->value; 
} 

举例说明您的费用总额以查看:

return view('view_path' , compact('feeSum')); 

认为$ feeSum与返回视图语句的功能相同。

回归变量后,在您的视图文件,将添加此例如:

<label>{{ $feeSum }}</label> 
+0

但我想重定向到revenuedetails页面。 如何访问$ id? – User57

+0

您必须将费用数组发送给您的视图,并且在视图文件中您可以尝试以下操作:@foreach($ array_name as $ row) @endforeach –

您可能要考虑使用旋转般的关系。

用户模式可能有类似:

# Get the fees for a user: 
public function fees() 
{ 
    return $this->hasMany('App\Fees', 'fees', 'courses', 'course_id', 'course_id') 
       ->withPivot('iterate', 'fields', 'here', 'to', 'pass', 'on') 
       ->withTimestamps(); 
} 

上面的代码尚未在所有测试,但我敢肯定的的hasMany/belongsToMany方法允许连接数关系中的表格。