和Laravel一起加入3桌不适合我

时间:2017-03-22 15:58:16

标签: php mysql join laravel-5 eloquent

我需要根据“作业”表获取失败作业列表,并使用“prealerts”表加入。唯一的中介是“包”表,它与“prealerts”共享一列,另一个与“jobs”共享。

结构如下:

All the structure mentioned before is here

filters.blade.php: (这里有一个复选框)

<input type="checkbox" name="failed" id="failedJobs" value="true"/>

我试图做的是:

JobRepositoriy.php:

public function search(array $filters = [])
{
.
.
.
.

    $query = $this->model
            ->select('jobs.*')
            ->distinct();

.
.
.
.

    if (isset($filters['failed']) && $filters['failed']){
            $query->ofSuccess(false);
    }


    return $query->orderBy('jobs.id', 'desc');
}

jobs.php(型号):

 public function scopeOfSuccess($query, $success){
    return $query->join('packages', 'packages.job_id', '=', 'jobs.id')
        ->join('prealerts', 'prealerts.package_id', '=', 'packages.id')
        ->where('prealerts.created_at', '>=', '2017-01-01 00:00:00')
        ->where('prealerts.success', $success);
}

但是,显示的结果不符合前面提到的要求。

0 个答案:

没有答案