【问题标题】:getting wrong id with laravel query使用 laravel 查询获取错误的 ID
【发布时间】:2020-04-04 10:58:56
【问题描述】:

我在下面有查询,但它返回错误的 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 idid of project_admins table。我试图在select() 中添加id 部分也用project_admins.id as id 替换organization_admins.id as id 但没有运气。

有什么想法吗?

更新

如果我使用'project_admins.id as id', 我会得到这个错误:

消息:“SQLSTATE[42S22]:未找到列:1054 未知列 '字段列表'中的'project_admins.id'(SQL:选择project_admins.idid, users.email 作为email, users.username 作为username, profiles.mobilePhone1 as phone, users.id as userId from organization_admins 内部连接 ​​users users.id = organization_admins.user_id 内连接 profiles on profiles.user_id = users.id 其中 organization_admins.user_id 不在(选择user_id from project_admins 其中project_admins.project_id = 2))"

【问题讨论】:

  • 这个问题已经在这里回答了,看看这个-stackoverflow.com/questions/19141487/…
  • @BloodyProgrammer 我在那里找不到我的答案。我的查询的问题是我没有加入project_admins 表,我只是将其用于比较,因此我无法在导出选择部分中获取它。
  • 什么是错误,请在运行此查询时解释确切的错误。

标签: php laravel


【解决方案1】:

您无法从表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

请注意,这是未经测试的,由于我不知道您的表结构可能不正确,但它应该可以理解。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-24
    • 1970-01-01
    相关资源
    最近更新 更多