laravel - 在 laravel 中用雄辩的联合和急切加载
问题描述
我有一张与表格Uuids
有变形关系的dealers, masterdealers, admins and customers
表格。我需要从上述所有用户类型表中获取电子邮件地址,以及从 uuids 表中获取他们的 uuid。我正在使用 union 来获取来自经销商、masterdealers、管理员和客户表的所有电子邮件,但我也想以某种方式急切地加载他们的 uuid。
我想要的输出是这样的:
{
email: 1@example.com
uuid: 1
}, {
email: 2@example.com
uuid: 5
}, {
email: 3@example.com
uuid: 11
}
我试过了:
DB::select("SELECT email FROM customers
UNION SELECT email FROM dealers
UNION SELECT email FROM masterdealers
UNION SELECT email FROM admins");
它给了我这 4 个表中的所有电子邮件。
解决方案
您需要加入您的变形表,以便为您的不同模型获取 uuid
SELECT u.uuid,c.email
FROM customers c
JOIN Uuids u ON c.id = u.some_mapped_col AND u.some_morph_col = 'Model Name'
UNION
SELECT u.uuid,d.email FROM dealers d
JOIN Uuids u ON d.id = u.some_mapped_col AND u.some_morph_col = 'Model Name'
UNION
SELECT u.uuid, m.email FROM masterdealers m
JOIN Uuids u ON m.id = u.some_mapped_col AND u.some_morph_col = 'Model Name'
UNION
SELECT u.uuid, a.email FROM admins a
JOIN Uuids u ON a.id = u.some_mapped_col AND u.some_morph_col = 'Model Name'
还要在 laravel 中运行原始查询,您可能需要DB::raw('.....')
推荐阅读
- spring - kafka中的反序列化异常
- c# - _Layout 中的 RazorComponent SelectList。馊主意?
- java - 如何将参数从 List 映射器方法传递到 Java mapstruct 中的 Object 映射器方法
- javascript - 仅当所有请求的输入都已填满时,才提交按钮 onClick 功能
- reactjs - 有条件地在 React JS 中的单个文件上为弹出表单或循环字段维护单独的文件
- google-cloud-automl - 如何在 GCP 中重新训练 AutlML 模型?
- python - 使用另一个列值提取嵌套列
- aws-lambda - AWS CDK 在部署时忽略符号链接
- laravel - Laravel Lumen 8:MethodNotAllowedHttpException 仅适用于远程服务器上的发布路由
- php - 用户 'username'@IPaddress 的访问被拒绝