我有三个模特
1. user
2. course
3. fee
其中用户模型与具有一对多关系的课程表相关联,课程模型与费用表以一对一关系连接。
问题是,我必须找到用户选择课程的所有费用的总和,用户完成的课程应该是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');
}
}
如果有人知道解决方案,请提供解决方案。
答案 0 :(得分:0)
我想你可以先找到用户:
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>
答案 1 :(得分:0)
您可能希望研究使用类似枢轴的关系。
您的用户模型可能包含以下内容:
# 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 方法允许链接关系中的多个表。< / p>