如何在 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。
我现在正在学习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。