如何编码数据数组并保存到数据透视表laravel

问题描述 投票:0回答:1

我想要的是能够将所有ID的服务保存到与给定关键字/标签关联的数据透视表中,但目前所做的只是它获取所创建对象的最后一个ID并保存到数据透视表中用不同的关键字。比方说我输入[id1 => service1,id2 => service2]和[id1 => keyword1,id2 => keyword2,id3 => keyword3],而不是只保存service2的id2和我想要的所有关键字保存所有服务和关键字的所有ID。我希望这是有道理的

foreach($params['service'] as $key => $value){
      $service = Service::firstOrNew(['service' => $value, 'price' => $params['price'][$key], 'business_id' => $params['business_id']]);
      $service->service = $value;
      $service->price = $params['price'][$key]; 
      $service->business_id = $params['business_id'];
      $service->save();
    }

    foreach($params['keywords'] as $keyword){
      $cleaned_keyword = self::cleanKeywords($keyword); 
      $newKeyword = Keyword::firstOrNew(['keyword' => $cleaned_keyword]);
      $newKeyword->keyword = $cleaned_keyword;
      $newKeyword->save();
      $service->keywords()->syncWithoutDetaching([$newKeyword->id => ['business_id' => $params['business_id']]]);
  }

none

这是我所期望的,但它很棘手,因为例如单个或2个服务可以有多个关键字。注意:我在数据库enter image description here中手动更改了这些值

这些是dd($ params)的结果

enter image description here

基于dd($ params)。附加只是结果

"service" => array:2[
1 => "Mobile development"
]

保存在数据透视表中并分配了所有关键字

enter image description here

php laravel eloquent pivot-table
1个回答
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.