gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 21:07:57 27 4
gpt4 key购买 nike

我有三个模型

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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com