[英]How to store multidimensional array from laravel and blade in database?
虽然我在 laravel 中执行此操作,但它存储了所创建的尽可能多的 PricingDetail 对象的所有 PricingFeature。 请帮我保存特定 PricingDetail 的功能。 还告诉如何在刀片中访问相同的
foreach($request->pricing_title as $key=>$value){
$pricing = new PricingDetail;
$pricing->software_id=$software->id;
$pricing->pricing_title=$request->pricing_title[$key];
$pricing->pricing_amount=$request->pricing_amount[$key];
$pricing->pricing_terms=$request->pricing_terms[$key];
$pricing->save();
foreach($request->pricing_title as $pt){
$pricingfeatures = new PricingFeature;
$pricingfeatures->pricing_details_id=$pricing->id;
$pricingfeatures->pricing_features=json_encode($request->pricing_features);
$pricingfeatures->save();
}
}
为此,您应该使用One to Many
关系:https://laravel.com/docs/9.x/eloquent-relationships#one-to-many
逻辑示例:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class PricingDetail extends Model
{
/**
* Get the features for the pricing detail.
*/
public function features()
{
return $this->hasMany(PricingFeature::class);
}
}
foreach($request->pricing_title as $key=>$value){
$pricing = new PricingDetail;
$pricing->software_id=$software->id;
$pricing->pricing_title=$request->pricing_title[$key];
$pricing->pricing_amount=$request->pricing_amount[$key];
$pricing->pricing_terms=$request->pricing_terms[$key];
$pricing->save();
// Changes
$pricing->features()->save($request->pricing_features);
}
你不做任何 json_encode 什么的。 只需将要保存为数组的字段投射到 model class 中,如下所示。
定价Feature.php
protected $casts = [
'pricing_features' => 'array',
];
然后您可以使用以下代码提前 go 。
foreach($request->pricing_title as $key=>$value){
$pricing = new PricingDetail;
$pricing->software_id=$software->id;
$pricing->pricing_title=$request->pricing_title[$key];
$pricing->pricing_amount=$request->pricing_amount[$key];
$pricing->pricing_terms=$request->pricing_terms[$key];
$pricing->save();
foreach($request->pricing_title as $pt){
$pricingfeatures = new PricingFeature;
$pricingfeatures->pricing_details_id=$pricing->id;
$pricingfeatures->pricing_features=$request->pricing_features;
$pricingfeatures->save();
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.