首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在laravel中用addselect()连接同一个表的两个左连接

在laravel中用addselect()连接同一个表的两个左连接
EN

Stack Overflow用户
提问于 2015-12-28 13:18:04
回答 1查看 3K关注 0票数 2

主计长:

代码语言:javascript
运行
复制
$warehouse_transfer = WarehouseTransfer::mySelect(array('date', 'from_warehouse_id', 'to_warehouse_id'))
            ->where('warehouse_transfer.id', $id)
            ->first();

型号:

代码语言:javascript
运行
复制
public function scopeMySelect($q, $columns = array()) {
    $q->addSelect("warehouse_transfer.id")
    // date
    if (in_array('date', $columns)) {
        $q->addSelect(DB::raw("DATE_FORMAT(oops_warehouse_transfer.date, '%d-%m-%Y') as date"));
    }

    // Warehouse Transfer From
    if (in_array('from_warehouse_id', $columns)) {
        $q->addSelect("warehouse_transfer.from_warehouse_id");
        $q->addSelect('warehouse_transfer.from_warehouse_id', 'w1.name AS from_warehouse_name');
        ->leftJoin('warehouse As w1', 'w1.id', '=', 'warehouse_transfer.from_warehouse_id');
    }
    // Warehouse Transfer To
    if (in_array('to_warehouse_id', $columns)) {
        $q->addSelect("warehouse_transfer.to_warehouse_id");
        $q->addSelect('warehouse_transfer.to_warehouse_id', 'w2.name AS to_warehouse_name');
        ->leftJoin('warehouse AS w2', 'warehouse_transfer.to_warehouse_id', '=', 'w2.id');
     }
     // Warehouse Transfer Staff Name
     if (in_array('staff_name', $columns)) {
         $q->addSelect("staff.name as staff_name")
                ->leftjoin('staff', 'staff.id', '=', 'warehouse_transfer.staff_id');
      }

      // Warehouse Transfer ITP
      if (in_array('itp', $columns)) {
          $q->addSelect("warehouse_transfer.itp");
      }

      // Warehouse Transfer UTP
      if (in_array('utp', $columns)) {
          $q->addSelect("warehouse_transfer.utp");
      }
}

表结构:

warehouse:

代码语言:javascript
运行
复制
1   id
2   name
3   code
4   status
5   itp
6   utp 

warehouse_transfer:

代码语言:javascript
运行
复制
1   id
2   date
3   from_warehouse_id
4   to_warehouse_id
5   staff_id
6   itp
7   utp 

问题:

SQLSTATE42S22:列未找到: 1054个未知列'w1.id‘在'on子句’中

我试过给出别名,但是给出了error

希望有人能解决这个问题!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-11 11:01:56

我知道解决办法了

代码语言:javascript
运行
复制
// Warehouse Transfer From
if (in_array('from_warehouse_id', $columns)) {
    $q->addSelect(DB::raw("fromw.id as from_warehouse_id, fromw.name from_warehouse_name"))
    ->leftjoin(DB::raw('oops_warehouse AS fromw'), DB::raw('fromw.id'), '=', 'warehouse_transfer.from_warehouse_id');
}

// Warehouse Transfer To
if (in_array('to_warehouse_id', $columns)) {
    //$q->addSelect('warehouse_transfer.to_warehouse_id', 'warehouse.name AS to_warehouse_name');
    $q->addSelect(DB::raw("tow.id as to_warehouse_id, tow.name to_warehouse_name"))
    ->leftjoin(DB::raw('oops_warehouse AS tow'), DB::raw('tow.id'), '=', 'warehouse_transfer.to_warehouse_id');
}

只是我需要使用DB::raw(),这对我来说很有用.

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34494282

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档