【发布时间】: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为空,请检查您的表
标签: laravel eloquent foreign-keys relationship laravel-8