繁体   English   中英

如何将 laravel 和刀片的多维数组存储在数据库中?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM