【问题标题】:Laravel JOIN replace if not NULLLaravel JOIN 如果不是 NULL 则替换
【发布时间】:2017-04-24 14:05:17
【问题描述】:

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

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

示例: 我有一个包含以下字段的用户表:姓名和年龄。 一个人更改了年龄,更改表中出现了一个新行,其中 name 字段为 NULL,年龄为新年龄。

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

尝试了加入,但没有成功:

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

【问题讨论】:

  • 到目前为止你尝试过什么?如果您尝试过,请在问题中包含您的代码。
  • 答案是肯定的,这是可能的。如果您可以包含您正在查找的数据和查询结果的示例,这将很有帮助。
  • 如果你的用户有 null 的变化,那你为什么不做 DB::table('users')->('changes') ?
  • @Rodrane 嗯,你是什么意思?

标签: php mysql laravel


【解决方案1】:

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

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

【讨论】:

  • "group by the user_id" 但列名:"user_id" 与来自用户的不同:"id"
猜你喜欢
  • 2017-04-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-17
  • 2010-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多