【问题标题】:Array to string conversion in stored procedure laravel存储过程laravel中的数组到字符串转换
【发布时间】:2020-11-30 20:45:45
【问题描述】:

我想使用存储过程将表单从 laravel 插入到 SQL Server。但我得到一个错误

数组到字符串的转换

请帮忙。

这是我的控制器

for ($i = 0; $i < count($request->qty_req); $i++) {
    $answers[] = [
        'qty_req' => $request->qty_req[$i],
        'qty_alc' => $request->qty_req[$i],
        'komponen' => $request->komponen[$i],
        'qty_bo'=>$request->qty_bo[$i],
        'kode_proyek'=>$request->kode_proyek,
        'nama_proyek'=>$request->nama_proyek,
        'proyek_sap'=>$request->proyek_sap,
        'kode_panel'=>$request->kode_panel,
        'nama_panel'=>$request->nama_panel,
        'foreman'=>$request->foreman
    ];
    }
    DB::insert('EXEC insertBPK ?,?,?,?,?,?,?,?,?,?',$answers);

这是我的存储过程:

CREATE PROCEDURE insertBPK
    @kode_proyek nvarchar(MAX),
    @nama_proyek nvarchar(MAX),
    @kode_panel nvarchar(MAX),
    @nama_panel nvarchar(MAX),
    @proyek_sap nvarchar(MAX),
    @foreman nvarchar(MAX),
    @komponen nvarchar(MAX),
    @qty_req nvarchar(MAX),
    @qty_alc nvarchar(MAX),
    @qty_bo nvarchar(MAX)
AS
BEGIN
    INSERT INTO bpk (kode_proyek, nama_proyek, kode_panel, nama_panel, proyek_sap, foreman, komponen, qty_req, qty_alc, qty_bo)
    VALUES (@kode_proyek, @nama_proyek, @kode_panel, @nama_panel, @proyek_sap, @foreman, @komponen, @qty_req, @qty_alc, @qty_bo);
END
GO

这是我的刀

<td class="text-center" style="width: 100px;">
    <input type="number" name="qty_req[]" class="form-control" max="{{$open_qty}}" min="0">
    <input type="text" name="komponen[]" value="{{$lk->komponen}}" hidden>
    <input type="text" name="qty_bo[]" value="{{$lk->qty_bo}}" hidden>
    <input type="text" name="kode_proyek" value="{{$kode_proyek}}" hidden>
    <input type="text" name="proyek_sap" value="{{$proyek_sap}}" hidden>
    <input type="text" name="nama_proyek" value="{{$nama_proyek}}" hidden>
    <input type="text" name="kode_panel" value="{{$kode_panel}}" hidden>
    <input type="text" name="nama_panel" value="{{$nama_panel}}" hidden>
</td>

【问题讨论】:

  • 在我的控制器中,如果我提交表单,我会收到错误消息“数组到字符串转换 bla...bla..”

标签: php arrays sql-server laravel stored-procedures


【解决方案1】:

我认为你应该先看文档hereDB::insert() 需要原始 SQL,也许你可以将其更改为插入 SQL。改成DB::insert('INSERT INTO bpk VALUES(...)',$answers)

DB::insert 也需要 2 个参数,第一个是字符串,第二个是数组,但是在第二个参数上,您传递了一个二维数组,也许您可​​以将 $answers[] 更改为 $answer 并且数组应该是一个普通数组(据我所知)并且您传递了一个关联数组,也许您可​​以尝试将您在DB::insert('...',$answers); 中传递的$answer 更改为DB::insert('...',array_values($answers));

祝你好运:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-08
    • 1970-01-01
    • 1970-01-01
    • 2012-09-07
    • 2016-09-02
    • 1970-01-01
    • 2017-01-14
    相关资源
    最近更新 更多