【发布时间】:2021-09-22 06:04:59
【问题描述】:
我有两个表,其中基表 user 表 id 列作为主键,子表 user_report 有一个外键 user_id。
我知道这不是将值存储为数组的好方法。但我只想知道目前的情况。
表 1:user
idnameemail
表2:user_report
id-
user_id(值存储为数组,如[1,2,4])
现在的问题是如何通过单个查询轻松检索用户报告数据和用户数据。
到目前为止,我已经尝试如下。
$report = UserReport::find( $id );
$users = User::whereIn( 'id', $report ->user_id )->get()->toArray();
我希望有人可以帮助解决这个问题。任何建议将不胜感激。
【问题讨论】:
-
你不应该那样做。规范化您的表
user_reports,其中user_id只有一个ID,但您宁愿拥有多行。这样你就可以使用 Laravel 关系 - 更流畅,更容易使用。 -
@Qirel 在问题中他说他知道这不是处理事情的正确方式。但我同意最好改变数据库结构并建立关系
-
@Qirel 感谢您的建议,我知道但只是想知道如何实现这种方式。
-
您不能将其简化为单个查询而不使其过于复杂,因为您需要先检索它并对其进行拆分。正如我之前所说,使用规范化表,您可以在单个查询中完成。
-
@Qirel 是的,我只是想知道这是否可能。我现在得到了答案。谢谢
标签: php laravel eloquent laravel-queue