【问题标题】:im trying to make a query on laravel but it's returning this error message我试图在 laravel 上进行查询,但它返回此错误消息
【发布时间】:2021-02-25 13:43:42
【问题描述】:

我正在尝试从存款中获取所有项目系列,但存款 ID 位于相关表上。在此功能上,我将列出请求的两个序列之间的所有系列

public function getSeries($params = [])
{
    $data      = collect($params);
    $inicio    = $data->only('serie_in');
    $fim       = $data->only('serie_fi');
    $depOrigem = $data->only('id_origem');

    $series = [];

    for($i = $inicio; $i <= $fim; ++$i)
    {
        $item = Item::leftJoin('produtoItem', 'produtoItem.id', '=', 'item.id_produtoItem')->where('serie', $i)->where('produtoItem.id_deposito', $depOrigem)->first();

        if(empty($item))
        {
            $status = 'I';
        }
        else
        {
            $status = $item->status;

        }
        $series[] = [
            'serie' => $i,
            'status' => $status
        ];

    }
    $result = [
        'status' => true,
        'data' => $series
    ];
    return $result;
}
    

这是错误信息,我想这一定是 sintax 错误,但真的不知道是什么?你能帮帮我吗?

Illuminate\Database\QueryException: SQLSTATE[HY000]: 一般错误: 2031 (SQL: select * from item left join produtoItem on produtoItem.id = item.id_produtoItem where @ 987654328@ = ? 限制 1) 在文件 /usr/share/nginx/html/controleestoque/vendor/laravel/framework/src/Illuminate/Database/Connection.php 第 671 行

【问题讨论】:

  • 提示:从错误中获取文字 sql(select * from item left join produtoItem on produtoItem.id = item.id_produtoItem where serie = ? 限制 1) 将问号替换为实际值,并在 db 工具中运行。这将阐明发生了什么问题。一旦你明白了什么是错误的,你就可以解决它。

标签: php sql laravel


【解决方案1】:

我在没有验证器的情况下在我的控制器上调用请求,所以我重写了 getSeries 方法。

public function getSeries(Request $request){
        $data = $request->only(['serie_in', 'serie_fi', 'id_origem']);
        $result = $this->produto_service->getSeries($data);
        return response()->json($result);
    }


而且我的功能可以正常工作!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-09
    • 1970-01-01
    相关资源
    最近更新 更多