在Laravel模型中创建左联接方法

时间:2019-05-07 07:38:06

标签: laravel eloquent

我在Controller的左下方有一个联接,该联接在一个报告中显示特定教师的所有记录,并返回所有正确的记录。我想在许多其他报告中使用完全相同的查询,因此我想在雄辩的模型中创建Method以便在需要的地方调用它。 如何在模型中使用此查询 以及如何在视图中调用它。

$.getJSON('http://www.hqcasanova.com/co2?callback=?', function (data) {
            //Fiddle with JSON data
        });

1 个答案:

答案 0 :(得分:0)

在教师模型中,您可以做

public function teacherRecords(){
    $teachers= DB::table('teachers')
    ->leftjoin('religions', 'teachers.religion_id', '=', 'religions.id')
    ->leftjoin('areas', 'teachers.area_id', '=', 'areas.id')
    ->select('teachers.*')
    ->where('teachers.id',$this->id)
    ->first();
}

并像$teach->teacherRecords();

一样使用它

如果我能理解表/模型之间的关系,那么我可以提供更好的解决方案。

如果老师只有一种宗教和一个地区,那就做吧

class Teacher extends Model{
    public function area()
    {
        return $this->hasOne('App/Area');
    }

    public function religion()
    {
        return $this->hasOne('App/religion');
    }
}

区域内模型

class Area extends Model{
        public function teacher()
        {
            return $this->hasOne('App/Teacher');
        }
    }

在宗教模型中

class Religion extends Model{
        public function teacher()
        {
            return $this->hasOne('App/Teacher');
        }
    }

现在您可以进行$teacher->area$teacher->religion