【问题标题】:Laravel 4 - JOIN - Same column nameLaravel 4 - 加入 - 相同的列名
【发布时间】:2014-11-09 15:55:00
【问题描述】:

我目前确实使用此代码从我的数据库中检索所需的数据

    $query = DB::table('packages')
        ->join('assigned_packages', function($join) use($id)
        {
            $join->on('packages.id', '=', 'assigned_packages.registered_package_id')
                ->where('assigned_packages.customer_id', '=', $id);
        })
        ->join('registered_packages', function($join)
        {
            $join->on('packages.id', '=', 'registered_packages.id')
                ->on('registered_packages.id', '=', 'assigned_packages.registered_package_id');
        });

它工作正常,但问题是这些表有同名的列,因此结果中只有最后一个。我该如何解决?通常我会在查询中使用as 选项,但老实说我不知道​​如何从上面将它添加到我当前的 JOIN 代码中。

【问题讨论】:

    标签: php mysql laravel laravel-4


    【解决方案1】:
    $query = DB::table('packages')
    ->join(...)
    ->join(...)
    ->select(DB::raw('packages.name as name1, assigned_packages.name as name2'))
    ->get();
    

    编辑:

    $sql = "select a.name as name1, b.name as name2";
    $sql .= " from a left join b on a.id=b.id1 and b.id2=&id";
    $result = DB::select($sql);
    

    【讨论】:

    • 这将产生一个对象,该对象将仅包含 select queryy (DB::raw) 的结果,但不包含上述连接的结果:(
    • @Michael 你能粘贴你想要的最终 SQL 吗?
    • 什么意思?我已经在问题中发布了我的加入查询。唯一的问题是连接中的列在两个表中具有相同的名称,因此我需要为它们指定一个自定义名称。所以你的 ->select 确实有效,但不会保留连接中的数据。
    • 你能把这些列放到 select(DB::raw()) 中吗?
    • 正如我所说的......我做到了,但它只会产生那些列而不是来自连接的其他数据。
    猜你喜欢
    • 2013-06-04
    • 2014-12-19
    • 1970-01-01
    • 2016-09-13
    • 2020-09-29
    • 2021-08-13
    • 1970-01-01
    • 2014-08-14
    • 2014-12-07
    相关资源
    最近更新 更多