我有两张桌子,"任务"和"课程"。有一对多的关系设置(任务属于一个课程,课程有很多任务)。我正在尝试过滤我的任务列表,但是对于如何基于课程表中的列进行查询感到困惑。
在课程表中,我有一个名为" college_name"的列。我有一个下拉过滤器,当我从中选择一个大学名称时,我想返回链接到课程表中具有相同' college_name'的行的所有任务。
所以我试图构建的查询是"选择所有属于一个课程的任务,其中学院名为X(大学名称取自下拉选择输入。在我的控制器中我是得到这样的下拉值:
$college = Input::get('colleges_filter');
...返回大学名称(例如"牛津大学")。我现在需要在查询中添加使用它,但我尝试错误的一切。有人可以帮忙吗?
答案 0 :(得分:0)
在Eloquent中,这将是这样的:
<?php namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Task extends Model {
public function course() {
return $this->hasOne(\App\Models\Course::class, 'foreign_key');
}
}
class Course extends Model {
public function tasks() {
return $this->hasMany(\App\Models\Task::class, 'foreign_key', 'local_key');
}
}
你用它就像:
Course::query->where('bla', 'bla')->tasks;
答案 1 :(得分:-1)
在您的课程模型中添加此关系。
class Course extends Model {
public function tasks() {
return $this->hasMany(Task::class, 'foreign_key', 'local_key');
}
}
获取课程任务基础列表选择将以下查询写入控制器。
$college = Input::get('colleges_filter');
$course = Course::where('college_name', $college)->with('tasks)->first();
您可以通过
访问课程列表$course->tasks