将数组保存在控制器laravel中

时间:2019-11-28 04:24:45

标签: laravel

ErrorException 数组到字符串的转换

    $presocio              = new Presocio;
    $presocio->prestamo_id = $request->prestamo_id;
    $presocio->ncuota      = $request->ncuota;
    $presocio->montopag    = $request->montopag;
    $presocio->fechapag    = $request->fechapag;
    $presocio->save();

最后,我设法使它像这样正常工作。 它可以通过不同的方式完成,例如 :: create :: insert

    $prestamo           = new Prestamo;
    $prestamo->socio_id = $request->socio_id;
    $prestamo->monto    = $request->monto;
    $prestamo->cuotas   = $request->cuotas;
    $prestamo->alias    = $request->alias;
    $prestamo->save();

    $idprestamo = $prestamo->id;

    if (count($request->ncuota) > 0) {
        foreach ($request->ncuota as $item => $v) {
            $presocio = new Presocio;
            $presocio->fill(
                array(
                    'prestamo_id' => $idprestamo,
                    'ncuota'      => $request->ncuota[$item],
                    'montopag'    => $request->montopag[$item],
                    'fechapag'    => $request->fechapag[$item],
                )
            );
            $presocio->save();
        }
    }
    toast('Pago Programados Registrado', 'success');
    return redirect('prestamo');

3 个答案:

答案 0 :(得分:1)

更新,因为我们现在提供了表格。您使用的是ncuota[]之类的表单名称,而不是ncuota的表单名称,这使它成为一个数组。您能否制作超过1张Preseocio?如果是这种情况,则要遍历控制器中的项目。

for ($i = 0; $i < count($request->ncuota); $i++)
{
    Presocio::create([
        'prestamo_id' => $request->prestamo_id[$i],
        'ncuota' => $request->ncuota[$i],
        'montopag' => $request->montopag[$i],
        'fechapag' => $request->fechapag[$i],
    ]);
}

否则,只需从表单名称的末尾删除[]

class Presocio
{
    ...
    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'prestamo_id',
        'ncuota',
        'montopag',
        'fechapag',
    ];
    ...
}

Presocio::create($request->all());

现在,那不是问题。那只是一些家务。

您的问题是您的请求字段之一是数组。无论是哪一种,您都需要将其转换为JSON对象或找到一种更好的存储方式。 如果您不希望将其保留为数组,请将数据库字段修改为jsonb字段。

答案 1 :(得分:0)

尝试此创建方法

删除所有代码,并仅在商店方法中写入此代码

$input = $request->all();
Presocio::create($input);

答案 2 :(得分:0)

您可以这样做:

POST