【问题标题】:How to Store multiple values in single field laravel如何在单个字段 laravel 中存储多个值
【发布时间】:2023-03-19 19:37:01
【问题描述】:

我正在使用这些简单的表格,并且想一次保存多个数据怎么可能?

控制器

  $status= new PostTable();
  $status->language = $request->language;

刀片

<input type="checkbox" value="hindi" name="language[]" id="language"> Hindi

型号

protected $fillable = [
  'language'
 ]

【问题讨论】:

  • 可以插入逗号分隔值或json编码数据
  • 'language' => json_encode($language) 我尝试过这样的方法,但没有成功!
  • 我想检索数据怎么办?
  • 只需获取值并使用 json_decode 即可。像 json_decode($language)
  • 哦,是的,但我现在正在使用controller $status = PostTable::where('id',$id)-&gt;get(); return view('post.profile', compact('status'));

标签: php json angular laravel


【解决方案1】:

对多个值尝试此方法:

 $user = User::find(auth()->user()->id);
 $categoriesString = implode(",", $request->get('categories'));
 $user->categories = $categoriesString;
 $user->save();

对于多张图片:

$medical_record = [];
$image = $request->file('file_name');
if ($image) {
    foreach ($image as $files) {
        $destinationPath = storage_path('medical-records/');
        $profileImage = date('YmdHis') . uniqid() . $files->getClientOriginalExtension();
        $files->move($destinationPath, $profileImage);
        $medical_record[] ="$profileImage";         
    }
    $data['file_name'] = implode(",", $medical_record);
}

【讨论】:

    【解决方案2】:

    使用serialize()函数

    $status->language = serialize($request->language);
    

    您可以稍后反序列化以使用。

    unserialize($request->language)
    

    【讨论】:

      【解决方案3】:

      这里来自 $request->language 是一个数组。在 php 中你给了一个函数 implode() 。PHP 中的 implode 函数用于“将数组的元素与字符串连接” .所以试试这个

      $status->language = implode(',', $request->language); //in which how you want separte your array is the first param 
      

      它将保存您的多个数据,用逗号分隔。详情:https://www.c-sharpcorner.com/UploadFile/051e29/implode-and-explode-function-in-php/

      【讨论】:

        【解决方案4】:

        请更改您的代码,因为您选择了多种语言,因此请使用implode 函数

         $status->language = $request->language;
        

        改变

         $status->language = implode(',', $request->language);
        

        【讨论】:

          【解决方案5】:

          这是您需要在控制器中执行此操作的方式

          $status= new PostTable();
          $language[] = $request->language
          $status->language = json_encode($language);
          

          【讨论】:

            【解决方案6】:
            You can insert comma
            implode(",",$request['language'])
            

            【讨论】:

              【解决方案7】:

              mysql DB

              中不允许存储数组

              所以您可以将其转换为 json 并执行此操作

              $status->language = json_encode($request->language);
              

              $status->language = implode(',', $request->language);
              

              【讨论】:

                猜你喜欢
                • 2011-09-23
                • 2022-06-18
                • 2015-05-30
                • 2016-12-03
                • 1970-01-01
                • 2012-05-21
                • 2015-07-20
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多