php - Laravel 5.2 如何通过 Laravel Eloquent 模型连接三个表

标签 php mysql laravel eloquent laravel-5

我有三个模型

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/

相关文章:

php - 如何更改 phpMyAdmin 中的表前缀?

php - 在 Laravel 中使用 Event 真正有什么好处?

php - 编写 Laravel 查询 - 相关模型的计数为正

php - 使用php列出mysql中的记录,但总共只出现一条记录?

javascript - 从 PHP 中的地址形成发件人地址

php - 可以在 PHP 的 == page_name 检查中包含多个页面吗?

php - 根据 empid wise 在 Mysql 中获取最高的 Sal 行

mysql - 如何让 MySQL 查询运行得更快?

c++ - 将 C++ 与 MySql 一起使用 : segmentation fault

php - 试图获取非对象Laravel PHP 5.8的属性 'cname'