如何在 laravel 5.2 中保存多个请求参数?

How to save multiple request parameters in laravel 5.2 ?

我现在正在学习laravel。我有这个问题。我已将 2 个请求参数传递给我的控制器函数。第一个请求参数包含一个对象值,但我将其转换为序列化形式,因为我的 table 字段将保存在该字段中,它具有文本数据类型。第二个请求参数包含一个 overall_total 计算值,它有一个 float 数据类型字段。我的问题是,我如何将它存储在我的数据库中?我尝试使用 create 函数,但它 returns 出错了。一些关于此的论坛不是很清楚。我还是想不通。有人可以帮我吗?这是我的代码。

函数存储

public function store(Request $request){

       $serialize_po = serialize($request['purchase_orders']);
       $overall_total = $request['overall_total'];
       $purchase_orders_save = PurchaseOrder::create(?);

}

如何使用 create 保存 2 个参数?还是有其他方法可以保存它?

$request['purchase_orders']内部如下图

$request['overall_total']里面只是一个数字。例如。 310

我的数据库Table结构如下图

像这样:

DB::table('purchaseOrder')->insert(
    ['purchase_orders' =>  $serialize_po,'overall_total' => $overall_total]
);

如果您想探索更多,请参阅 doc

Laravel中的create()函数接受一个关联数组,其中数组键是列名,数组值是列对应的值。

因此您的商店功能可能如下所示:

public function store(Request $request){
    $serialize_po = serialize($request['purchase_orders']);
    $overall_total = $request['overall_total'];
    $purchase_orders_save = PurchaseOrder::create([
        'purchase_orders' => $serialize_po,
        'overall_total' => $overall_total
    ]);
}

另一件需要注意的事情是,作为安全预防措施,Laravel 不允许以这种开箱即用的方式填充模型的属性。您将需要使用 $fillable 属性 在您的模型中列出允许通过传入关联数组来填充的键。如果不这样做,您可能会得到 MassAssignmentException.

因此在您的模型中,您可能至少需要具备以下条件:

class PurchaseOrder extends Model
{
    protected $fillable = ['purchase_orders', 'overall_total'];
}

有更多的选择和方法可以做到这一点,但这是基本和典型的场景。

文档中提供了有关使用 create() 方法和处理质量分配的更多信息:https://laravel.com/docs/5.2/eloquent#mass-assignment

考虑到您的模型名称是 PurchaseOrder,您首先需要为其创建一个新实例。然后,使用保存方法。

public function store(Request $request)
{
    $purchaseOrder = new PurchaseOrder;
    $purchaseOrder->overall_total = $request['overall_total'];
    $purchaseOrder->purchase_orders = serialize($request['purchase_orders']);
    $purchaseOrder->save();
}

有关详细信息,请参阅 https://laravel.com/docs/5.2/eloquent#basic-inserts