如何使数组的第一项处于活动状态而其余状态处于非活动状态

时间:2020-05-14 05:05:01

标签: php laravel

我有多个图片上传器,我只希望第一张图片获得真实值,而其他则为假。我的意思是我有数据库字段名称'isPrimary',所以当我上传多个图像时,我只希望第一个图像获得真值,而其他图像获得假值。

  <div class="col-lg-12 p-t-20">
     <label class="control-label col-md-3">Upload Room Photos</label>
       <input  type = "file" id = "image" name="image[]" multiple class="file" data-overwrite-initial="false" 
   data-min-file-count="1">
 </div>

这是我的图片存储控制器

 if($request->hasfile('image')) {
            $image = $request->image;
            if(count($image) === 1){
                $isPrime =  $dataa['isPrimary'] = true;
            }else{
                ///So here i need logic to make ('isPrimary') field to be true in only first image when there is multiple images is uploaded

           }
            foreach ($image as $photo) {
//                dd($photo);
                $name = $photo->getClientOriginalName();
                $filename = $photo->move(('storage/images/room_types/'), $name);
//

                $dataa = [
                    'room_type_id' => $room_type->id,
                    'image' => $filename,
                    'isPrimary'=>$isPrime,
                ];
                Image::create($dataa);
            }
        }

对不起,我的英语不好,因为这是我的第二语言。 谢谢,谢谢。

2 个答案:

答案 0 :(得分:0)

尝试一下

 foreach ($image as $photo) {
        $name = $photo->getClientOriginalName();
        $filename = $photo->move(('storage/images/room_types/'), $name);    
        $dataa = [
            'room_type_id' => $room_type->id,
            'image' => $filename,
            'isPrimary'=> (\Arr::first($image) == $photo) ? true : false,
        ];
        Image::create($dataa);
    }

答案 1 :(得分:0)

$is_prime = true;
foreach ($image as $photo) {
    $name = $photo->getClientOriginalName();
    $filename = $photo->move(('storage/images/room_types/'), $name);

    $dataa = [
        'room_type_id' => $room_type->id,
        'image' => $filename,
        'isPrimary'=>$isPrime,
    ];

    $is_prime = false;
}

Image::create($dataa);