gpt4 book ai didi

php - 在 laravel ORM 中,两个左连接与 addselect() 相同的表

转载 作者:行者123 更新时间:2023-11-29 02:52:14 25 4
gpt4 key购买 nike

Controller :

$warehouse_transfer = WarehouseTransfer::mySelect(array('date', 'from_warehouse_id', 'to_warehouse_id'))
->where('warehouse_transfer.id', $id)
->first();

型号:

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");
}
}

表结构:

仓库:

1   id
2 name
3 code
4 status
5 itp
6 utp

仓库转移:

1   id
2 date
3 from_warehouse_id
4 to_warehouse_id
5 staff_id
6 itp
7 utp

问题:

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'w1.id' in 'on clause'

我试过给别名,但它给出了显示的error

希望有人对此有解决方案...!!

最佳答案

我得到了解决方案,

// 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() 并且它对我有用...

关于php - 在 laravel ORM 中,两个左连接与 addselect() 相同的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34494282/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com