我从warehouse_transfer
表到warehouse
表定义了两个外键。
我尝试过两种方法来实现我的Laravel雄辩的查询,但这两种方式都不起作用。
引用同一表的两个ForeignKey,
warehouse_transfer:
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
仓库:
1 id int(11)
2 name varchar(500)
在从仓库表中检索数据的时候,
第1步:
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
第二步:
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
因此最终问题是左联表上的别名无法工作
发布于 2016-01-21 06:33:15
我错过了我用过的DB::raw()
,问题已经解决了,
// 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');
}
https://stackoverflow.com/questions/34652426
复制相似问题