Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用laravel查询获取错误的id_Php_Laravel - Fatal编程技术网

Php 使用laravel查询获取错误的id

Php 使用laravel查询获取错误的id,php,laravel,Php,Laravel,我有下面的查询,但它返回wront 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') ->

我有下面的查询,但它返回wront 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();
我需要获取的id是project_admins表的id。我曾尝试在“选择部分”中添加id,并将组织_admins.id替换为项目_admins.id,但没有成功

有什么想法吗

使现代化 如果我使用“project_admins.id as id”,我将得到以下错误:

消息:SQLSTATE[42S22]:未找到列:1054未知列 “字段列表”SQL中的“project\u admins.id”:选择project\u admins.id 作为id,users.email作为电子邮件,users.username作为用户名, profiles.mobilePhone1作为电话,users.id作为来自 组织\管理员在users.id上加入内部用户= 上的组织\u admins.user\u id内部联接配置文件 profiles.user_id=users.id其中 组织\u admins.user\u id不在“从中选择用户\u id” project\u admins,其中project\u admins.project\u id=2


无法从表project\u admins获取任何字段,因为此信息位于子查询中。要实现这一点,您必须重新构造查询

不过,您可以从项目管理员开始查询,并加入组织管理员。通过这种方式,您还可以访问project_管理员:仅限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

请注意,这是未经测试的,因为我不知道您的表结构可能不正确,但它应该能让人明白这一点

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