laravel - 模型与自身的关系 Laravel
问题描述
我有一张课程表。我希望某些课程成为其他课程的先决条件。我将这些课程称为目标和先决条件。我制作了一个先决条件模型和先决条件表,如下所示。我可以在课程模型中使用 oneToMany 检索课程->先决条件。我想建立先决条件->课程关系,但无法确定在先决条件模型中建立这种关系的语法。
这是我的迁移:
Schema::create('lessons', function (Blueprint $table)
{
$table->id();
$table->foreignId('course_id');
$table->string('title');
$table->string('blurb');
$table->string('description');
$table->string('YouTube');
$table->integer('order_in_course');
$table->timestamps();
$table->softDeletes();
});
Schema::create('prerequisites', function (Blueprint $table)
{
$table->foreignID('goal');
$table->foreignID('prerequisite');
$table->foreignID('status_id');
$table->integer('status_repetitions_required');
$table->integer('spacing_id');
$table->timestamps();
$table->softDeletes();
});
这是课程模型:
public function prerequisites()
{
return $this->hasMany(Prerequisite::class, 'goal');
}
和先决条件模型:
public function lesson()
{
return $this->belongsTo(Lesson::class, 'prerequisite');
}
这是我正在运行的测试:
/**
* prerequisite_to_lesson_relationship
* @test
*/
public function prerequisite_to_lesson_relationship()
{
$this->withoutExceptionHandling();
/** make lessons and prerequisite */
$goal = Lesson::factory
( [ 'title' => 'Goal Lesson' ,] ) -> create();
$prerequisite = Lesson::factory
( [ 'title' => 'Prerequisite Lesson', ] )->create();
$this->seed(PrerequisiteSeeder::class);
/** now get the lesson from the prerequisite using controller method getLessonFromPrerequisite*/
$lessonFromPrerequisite = $prerequisite->lesson;
dd($lessonFromPrerequisite);
}
当我运行测试时,dd() 返回“null”。
我试图在 Prerequisite 模型中编写 belongsTo 但似乎没有任何效果。问题似乎与不使用标准外键有关(这不起作用,因为您不能在 Prerequisites 表中重复 course_id 作为列名)。任何人都知道如何编写关系以从先决条件中获得教训?
提前致谢。
解决方案
推荐阅读
- javascript - Context API 和 Redux 的区别
- python - 网页抓取时如何获得爱尔兰的欧元价格值?
- r - 无法在 R 中对因子变量执行重新编码
- azure - 为什么 splunk 许可证管理器的使用率很高?
- nlp - 使用 dialogflow 控制台创建的 Dialogflow 自定义实体无法按预期工作 - DeconstructingChatbots 教程
- reactjs - 如何在 React Typescript 中提供带有上下文 API 的 useReducer?
- java - 在 Android Studio 上使用 python 和 matplotlib 绘制时间
- netbeans - 有没有办法在 Netbeans 中获得单独的控制台窗口?一种用于构建消息,一种纯粹用于程序输出?
- bash - 调用另一个函数内部的函数
- react-native - 如何更新 rnfirebase admob 以支持 iOS 14 AppTrackingTransparency