我有三个模型
1. user
2. course
3. fee
其中用户模型与类(class)表以一对多关系连接,类(class)模型与费用表以一对一关系连接。
问题是,我必须找到用户选择类(class)的所有费用的总和,并且用户完成的任务应该是 1。如何编写查询?
类(class)模型:
<?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);
}
此后您将返回该用户的所有类(class):
$courses = $user->courses;
最后,您将实现一个 foreach 语句来返回每门类(class)的费用:
foreach($courses as $course){
$feeSum += $course->fee->value;
}
传递费用金额以供查看的示例:
return view('view_path' , compact('feeSum'));
假设 $feeSum 与返回 View 语句的函数相同。
返回变量后,您将在 View 文件中添加以下内容,例如:
<label>{{ $feeSum }}</label>
关于php - Laravel 5.2 如何通过 Laravel Eloquent 模型连接三个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36651581/