首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Laravel5.1左联接别名在同一表上发出两个外键

Laravel5.1左联接别名在同一表上发出两个外键
EN

Stack Overflow用户
提问于 2016-01-07 10:11:55
回答 1查看 3.7K关注 0票数 1

我从warehouse_transfer表到warehouse表定义了两个外键。

我尝试过两种方法来实现我的Laravel雄辩的查询,但这两种方式都不起作用。

引用同一表的两个ForeignKey,

warehouse_transfer:

代码语言:javascript
运行
复制
1   id                  int(11)         

2   date                timestamp

3   from_warehouse_id   int(11)    references warehouse

4   to_warehouse_id     int(11)    references warehouse

5   staff_id            int(11)

6   itp                 timestamp

7   utp                 timestamp   

仓库:

代码语言:javascript
运行
复制
1   id                  int(11)         

2   name                varchar(500)

在从仓库表中检索数据的时候,

第1步:

代码语言:javascript
运行
复制
WarehouseTransfer::select("warehouse_transfer.*,staff.name as staff_name,warehouse.name AS from_warehouse_name,warehouse.name AS to_warehouse_name")
                ->leftjoin('staff', 'staff.id', '=', 'warehouse_transfer.staff_id')
                ->leftJoin('warehouse', 'warehouse.id', '=', 'warehouse_transfer.from_warehouse_id')
                ->leftJoin('warehouse', 'warehouse.id', '=', 'warehouse_transfer.to_warehouse_id')
                ->paginate(10)

上面写着

1066非唯一表/别名:oops_warehouse

第二步:

代码语言:javascript
运行
复制
WarehouseTransfer::select("warehouse_transfer.*,staff.name as staff_name,w1.name AS from_warehouse_name,w2.name AS to_warehouse_name")
                ->leftjoin('staff', 'staff.id', '=', 'warehouse_transfer.staff_id')
                ->leftJoin('warehouse AS w1', 'w1.id', '=', 'warehouse_transfer.from_warehouse_id')
                ->leftJoin('warehouse AS w2', 'w2.id', '=', 'warehouse_transfer.to_warehouse_id')
                ->paginate(10)

上面写着

列未找到:'on子句‘中的1054个未知列oops_w1.id

因此最终问题是左联表上的别名无法工作

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-21 06:33:15

我错过了我用过的DB::raw(),问题已经解决了,

代码语言: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');
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34652426

复制
相关文章

相似问题

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