首页 文章

查询belongsTo关系

提问于
浏览
0

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

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

所以我试图 Build 的查询是“选择属于一个课程的所有任务与学院名称的X(学院名称取自下拉选择输入 . 在我的控制器中,我得到这样的下拉值) :

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

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

2 回答

  • 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

    在您的课程模型中添加此关系 .

    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
    

相关问题