php - 使用 laravel 查询获取错误的 ID
问题描述
我在下面有查询,但它返回错误的 ID。
$selectedAdmins = DB::table('organization_admins')
->whereIn('organization_admins.user_id', function($query) use ($id) {
$query->where('project_admins.project_id', $id)->select('user_id')
->from('project_admins');
})
->join('users', 'users.id', '=', 'organization_admins.user_id')
->join('profiles', 'profiles.user_id', '=', 'users.id')
->select(
'organization_admins.id as id',
'users.email as email',
'users.username as username',
'profiles.mobilePhone1 as phone',
'users.id as userId'
)
->get();
我需要得到as id
的是id of project_admins table
. 我试图添加部分替换id
但没有运气。select()
organization_admins.id as id
project_admins.id as id
任何想法?
更新
如果我使用'project_admins.id as id',
我会得到这个错误:
消息:“SQLSTATE [42S22]:未找到列:1054 '字段列表'中 的未知列' project_admins.id'(SQL:选择.as ,.as ,
project_admins
.asid
,id
.as ,.as from inner join onusers
. = . . = . where . not in (select from where . = 2))上的 内部连接"users
username
username
profiles
mobilePhone1
phone
users
id
userId
organization_admins
users
users
id
organization_admins
user_id
profiles
profiles
user_id
users
id
organization_admins
user_id
user_id
project_admins
project_admins
project_id
解决方案
您无法从表中获取任何字段,project_admins
因为此信息在子查询中。您将不得不重组查询来实现这一点。
您可以开始查询project_admins
,并加入组织管理员。这样您也可以访问 project_admins :(仅限 SQL 查询,您将弄清楚如何在 laravel 中进行操作):
SELECT
project_admins.id as id,
users.email as email,
users.username as username,
profiles.mobilePhone1 as phone,
users.id as userId
FROM
project_admins
LEFT JOIN
organization_admins
ON
organization_admins.user_id = project_admins.user_id
LEFT JOIN
users
ON
users.id = organization_admins.user_id
LEFT JOIN
profiles
ON
profiles.user_id = user.id
WHERE
organization_admins.user_id IS NOT NULL /* only select rows where project organization admin exists */
AND
project_admins.project_id = $id
请注意,这是未经测试的,并且由于我不知道您的表结构可能不正确,但它应该可以理解。
推荐阅读
- android - 如何让这个 imageview 出现在布局上?
- sql - SQL 查询 - 案例和子字符串
- sql - SQL Server:找到处理器至少具有 3 种独特速度的生产者
- python - 从 np.empty 初始化 numpy 数组
- javascript - 路由中带有可选字符的 Koa-router
- arrays - 为什么 p[0]++ 与 C 中的 *(p)++ 不同
- python - 计算 Matplotlib 文本旋转
- html - 我正在使用标签,我想使用下一个/上一个按钮在标签之间切换
- php - PHP 使用 MailHog 从 docker 容器发送邮件
- sql - 用 0 替换重复项,保留一个实例 - MS ACCESS