我在“视频类别”和“视频课程”之间有关系,一个类别可以有很多课程,我想通过视频类别项获取视频课程,但会出错
视频类别模型
class VideoCategory extends Model
{
public function video_courses(){
return $this->hasMany('App\VideoCourse');
}
}
视频课程模型
class VideoCourse extends Model
{
public function video_category()
{
return $this->belongsTo(VideoCategory::class);
}
}
我的观点
@forelse ($category->video_courses as $video_course)
<a href="#"">{{$course->title}}</a>
@empty
<p>No Video Courses Available</p>
@endforelse
错误:
(4/4)ErrorException
SQLSTATE [42S22]:找不到列:1054“ where子句”中的未知列“ video_courses.video_category_id”(SQL:从video_courses
中选择*,其中video_courses
。video_category_id
= 2和{{ 1}}。video_courses
不为空,video_category_id
。video_courses
为空)(视图:C:\ xampp \ htdocs \ QuickLMS \ resources \ views \ category.blade.php)< / p>
答案 0 :(得分:3)
在每个属于和hasMany的第二个参数中,您必须定义与这两个表相关的外键:
class VideoCourse extends Model
{
public function video_category()
{
return $this->belongsTo(VideoCategory::class, 'video_category_id');
}
}
class VideoCategory extends Model
{
public function video_courses(){
return $this->hasMany(VideoCourse::class,'video_category_id');
}
}
该错误表明您在表中没有video_category_id字段作为外键。在第二个参数中传递您的外键列名称。
答案 1 :(得分:0)
看起来您的表列与多对一关系不匹配。您的video_courses表应具有video_category_id列。这样,每个课程记录都会引用它所属的类别。
答案 2 :(得分:0)
如果您为id
使用其他密钥,请确保在关联方法中提供该密钥,例如:
public function video_courses() {
// second parameter is the foreign key.
return $this->hasMany(VideoCourse::class, 'video_course_id');
}
答案 3 :(得分:0)
在VideoCategory
模型中提供关系的密钥
public function video_courses() {
return $this->hasMany(VideoCourse::class, 'video_course_id');
}