我有三个型号的
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');
}
}
如果有人知道解决方案,请提供一个。
我想你可以先找到用户:
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方法允许在一个关系中链接多个表。