如果不是NULL,则Laravel JOIN替换为

时间:2017-04-24 14:05:18

标签: php mysql laravel

我想知道是否可以在laravel / sql中创建一个连接,只有在它们不为空时才替换它们。

我正在尝试创建一个“更改”表。如果对用户进行了更改,则会将其保存到更改表中。如果某人想要选择所有用户,他可以看到用户,如果他们存在于更改表中,他会看到结果中的更改。

实施例: 我有一个用户表与字段:名称和年龄。 一个人改变了年龄,并且更改表中有一个新行,名称字段为NULL,年龄为新年龄。

然后我选择users表并查看旧名称(因为它在更改表中为NULL)和新时代(也因为它在更改表中)

尝试使用连接,但这并不能解决问题:

$data = DB::table('changes') 
        ->join('users', 'changes.user_id', '=', 'users.id')
        ->select('*')
        ->get();

1 个答案:

答案 0 :(得分:0)

我认为内部联接应该可以解决问题,这是一个想法:

您查询更改表,按user_id分组,选择具有最新日期的那个,然后使用您的用户表进行内部联接...但我不认为您使用Eloquent执行此操作,RAW sql可能是你想要的东西......