Yêu cầu thg 11 29, 2019 4:01 SA 102 0 2
  • 102 0 2
+1

Update Multi Images and Files

Chia sẻ
  • 102 0 2

Mọi người cho em hỏi là em có 1 json tên file ảnh lưu vào database. Giowf em muốn update 1 ảnh và xóa đi 2 ảnh Mọi người có thể cho em cách giải quyết được không ạ Trong lavarel ạ

Avatar Hải Hà @HaiHaChan
thg 11 29, 2019 4:07 SA

Em muốn hỏi thao tác, câu truy vấn sql hay cách viết code ??? Đặt câu hỏi rõ ràng hơn được k em?

2 CÂU TRẢ LỜI


Đã trả lời thg 11 29, 2019 4:08 SA
+2

Cái này là tư duy code thôi chứ chả có trick gì cả :v

  1. Bạn get json đó từ DB ra
  2. Dùng json_decode($json, true), bạn sẽ có được một mảng. Vấn đề là mảng json bạn lưu vào DB cần có một cái gì đó để bạn có thể tìm lại được ảnh, ví dụ mảng sau khi decode của bạn trông giống thế này:
$images = [
   anh_ngoc_trinh => 'link ảnh',
   anh_khong_che => 'link ảnh khác',
]

ok, giờ bạn tìm trong array đó và update lại theo key của ảnh, ví dụ key ảnh bạn đưa vào là:

$key_anh = 'anh_ngoc_trinh';
$images[$key_anh] = 'link mới';
$updatedImages = $images;
  1. Xóa đi 2 ảnh thì bạn cũng cần phải biết 2 ảnh đấy có key là gì, sau đó có 2 cách xóa cho bạn:

Xóa một cái một:

$key_anh = 'anh_ngoc_trinh';
$images[$key_anh] = 'link mới';

$key_xoa = 'anh_khong_che';
unset($images[$key_xoa]);

$updatedImages = $images;

Xóa nhiều cái một lúc:

$key_anh = 'anh_ngoc_trinh';
$images[$key_anh] = 'link mới';

$key_xoa = ['anh_khong_che', 'anh_ngoc_trinh'];
foreach($key_xoa as $item) {
    unset($images[$item]);
}

$updatedImages = $images;

Đó là cách dễ nhất, ngoài ra còn một số function hỗ trợ việc này gọn gàng hơn, bạn tìm trên google: php xóa element khỏi array là ra cả rổ

Chia sẻ
Đã trả lời thg 11 29, 2019 6:30 SA
+1

nếu là RDSDB thì tách riêng ra 1 table, dùng sẵn cái morphTo của laravel đó, index được và không gây dư thừa dữ liệu

Chia sẻ
Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí