我正在使用Laravel和Eloquent。
我有一个courses
表和一个包含相关课程的Pivot表。
我名为relatedCourses
的数据透视表有2列,course1& course2。
在上面的示例中,课程ID 5与课程ID 7相关。
$data["course"] = course::where("isActive",1)->with('related')->find(5);
这有效,并将ID 7作为相关内容。
如果我尝试
$data["course"] = course::where("isActive",1)->with('related')->find(7)
它应该将ID 5作为相关内容,这正是我想要实现的目标。
我的代码在模型中是这样的:
class course extends Model
{
public function category()
{
return $this->hasOne('App\courseCategory',"categoryId");
}
public function related()
{
return $this->belongsToMany('App\Models\course', 'relatedCourses', 'course1', 'course2');
}
}
答案 0 :(得分:0)
您可以为此查询定义两个关系。
class course extends Model
{
public function category()
{
return $this->hasOne('App\courseCategory',"categoryId");
}
public function relatedCourses()
{
return $this->belongsToMany('App\Models\Course', 'relatedCourses', 'course1', 'course2');
}
public function originalCourses()
{
return $this->belongsToMany('App\Models\Course', 'relatedCourses', 'course2', 'course1');
}
}
然后你可以查询你的关系,
$data["course"] = course::where("isActive",1)->with('relatedCourses')->find(5);
和
$data["course"] = course::where("isActive",1)->with('originalCourses')->find(7);
要合并这两种关系,您可以这样做
$course = course::where("isActive",1)->with('originalCourses', 'relatedCourses')->get();
希望这会对你有所帮助。