Asked Nov 29th, 4:01 AM 72 0 2
  • 72 0 2
+1

Update Multi Images and Files

Share
  • 72 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 ạ

Hải Hà @HaiHaChan
Nov 29th, 4:07 AM

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?

0
| Reply
Share

2 ANSWERS


Answered Nov 29th, 4:08 AM
+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ổ

Share
Answered Nov 29th, 6:30 AM
+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

Share