查询belongsTo关系

时间:2017-01-31 10:19:29

标签: laravel laravel-5

我有两张桌子,"任务"和"课程"。有一对多的关系设置(任务属于一个课程,课程有很多任务)。我正在尝试过滤我的任务列表,但是对于如何基于课程表中的列进行查询感到困惑。

在课程表中,我有一个名为" college_name"的列。我有一个下拉过滤器,当我从中选择一个大学名称时,我想返回链接到课程表中具有相同' college_name'的行的所有任务。

所以我试图构建的查询是"选择所有属于一个课程的任务,其中学院名为X(大学名称取自下拉选择输入。在我的控制器中我是得到这样的下拉值:

$college = Input::get('colleges_filter');

...返回大学名称(例如"牛津大学")。我现在需要在查询中添加使用它,但我尝试错误的一切。有人可以帮忙吗?

2 个答案:

答案 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