【发布时间】:2021-09-05 12:10:58
【问题描述】:
我正在尝试执行以下代码,错误适用于代码的 $waitingToBeShipped... 部分。如您所见,我正在使用innerJoin。我想检索包含仍在等待发货的产品的订单的所有行。
public function destroyMany($ids) {
$status = false;
$ids = explode(",", $ids);
foreach ($ids as $id) {
$innerJoin = OrderDetails::where('product_id', $id)->pluck('order_id');
if ($innerJoin->count()) {
$innerJoin = preg_replace("/[^A-Za-z0-9\-]/", '', $innerJoin);
Log::info($innerJoin);
}
$waitingToBeShipped = Order::where('is_delivered', 0)
->join('order_details', 'orders.id', '=', $innerJoin)
->get();
}
}
但它会返回:
local.ERROR: SQLSTATE[42S22]: Column not found: 1054 Unknown column '2' in 'on clause' (SQL: select * from `orders` inner join `order_details` on `orders`.`id` = `2` where `is_delivered` = 0 and `orders`.`deleted_at` is null)
我尝试在 PHPMyAdmin 中手动运行此查询,这也会导致我刚刚复制的文字查询出现错误,但是,当我删除数字 2 周围的反引号时,它确实给了我一个结果。
我不确定如何为我的代码做同样的事情?任何帮助将不胜感激,谢谢!
【问题讨论】:
标签: sql laravel eloquent controller inner-join