Laravel 5.4加入两张桌子

时间:2017-09-22 13:58:20

标签: php mysql laravel laravel-5.4

我在这里很丢失。我正在尝试获取个人资料 个人资料表中的人员列表 strong>具有特定课程(例如心理学)和(例如2011年)的表格。到目前为止,这是我提出的,不幸的是它没有用。

$check = Record::join('Profiles', function ($join) {
        $join->on('Records.firstname', '!=', 'Profiles.firstname');
        $join->on('Records.lastname', '!=', 'Profiles.lastname');
        $join->on('Records.middlename', '!=', 'Profiles.middlename');
    })
    ->select('Records.*', 'Profiles.*')
    ->where('Records.year', '2011')
    ->where('Records.course', 'Psychology')
    ->get(); 

    dump($check);

有什么方法可以解决这个问题吗?我是新手。提前致谢。关于加入表格的建议和提示将不胜感激。

2 个答案:

答案 0 :(得分:0)

我会看一下左外连接,然后选择具有空配置文件名称的记录。

$check = Record::leftJoin('Profiles', function ($join) {
        $join->on('Records.firstname', '=', 'Profiles.firstname');
        $join->on('Records.lastname', '=', 'Profiles.lastname');
        $join->on('Records.middlename', '=', 'Profiles.middlename');
    })
    ->select('Records.*', 'Profiles.*')
    ->where('Records.year', '2011')
    ->where('Records.course', 'Psychology')
    ->whereNull('Profiles.firstname')
    ->get(); 

答案 1 :(得分:0)

请尝试NOT EXISTS子查询:

use Illuminate\Database\Query\Builder;

$check = \DB::table('Records')
            ->whereNotExists(function(Builder $query) {
                $query->select(\DB::raw(1))
                    ->from('Profiles')
                    ->whereRaw('Records.firstname = Profiles.firstname')
                    ->whereRaw('Records.middlename = Profiles.middlename')
                    ->whereRaw('Records.lastname = Profiles.lastname');
            })
            ->select('firstname', 'middlename', 'lastname')
            ->where('year', 2011)
            ->where('course', 'Psychology');
            ->get();
相关问题