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>
答
您可能要考虑使用旋转般的关系。
你用户模式可能有类似:
# 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方法允许连接数关系中的表格。
但我想重定向到revenuedetails页面。 如何访问$ id? – User57
您必须将费用数组发送给您的视图,并且在视图文件中您可以尝试以下操作:@foreach($ array_name as $ row) @endforeach –