如何使用 Laravel 关系从数据库中获取父元素?
Posted
技术标签:
【中文标题】如何使用 Laravel 关系从数据库中获取父元素?【英文标题】:How to get parent element from database using Laravel relationship? 【发布时间】:2021-08-03 23:22:22 【问题描述】:我想获得所有 SubCourse 家长。例如:我在数据库中有 html 课程,而 HTML 有 1 个子课程 HTML flex,我想获得 HTML flex 父级 HTML Course。
我试过了,但我得到了错误:
$subCourses = SubCourse::with('courses')->get()
Course.php
class Course extends Model
use HasFactory;
protected $fillable = [
'title',
];
public function sub_courses()
return $this->hasMany(SubCourse::class);
SubCourse.php
class SubCourse extends Model
use HasFactory;
protected $fillable = [];
public function courses()
return $this->morphOne(Course::class, 'course_id');
课程迁移
public function up()
Schema::create('courses', function (Blueprint $table)
$table->id();
$table->string('title');
);
子课程迁移
public function up()
Schema::create('sub_courses', function (Blueprint $table)
$table->id();
$table->string('title');
$table->foreignId('course_id')->constrained()->onDelete('cascade');
);
解决办法是:
return $this->belongsTo(Course::class, 'course_id');
【问题讨论】:
将子课程模型更改为return $this->belongsTo(Course::class);
我返回 null。
SubCourse::with('courses')->get()
是否在dd
上将course_id
返回为空?
是的,我在 tinker 中试过。
可能course_id
为空,请检查您的表
【参考方案1】:
通过将关系更改为子课程模型来试试这个
子课程.php
class SubCourse extends Model
use HasFactory;
protected $fillable = [];
public function courses()
return $this->belongsTo(Course::class,'course_id');
【讨论】:
这个返回null。以上是关于如何使用 Laravel 关系从数据库中获取父元素?的主要内容,如果未能解决你的问题,请参考以下文章