Size: a a a

2020 February 06

AP

Alexander Pavlenko 🌚... in Laravel Pro
в том что картинку нужно удалить из папки и еще из базы?)
источник

zN

zVlad Nesquik in Laravel Pro
Alexander Pavlenko 🌚
в том что картинку нужно удалить из папки и еще из базы?)
Из папки надо удалить. Что бы место не занимала она :) Вот в чем проблема))) Зачем хранить картинки, если нету новости? )
источник

AP

Alexander Pavlenko 🌚... in Laravel Pro
Вот в ЦМС DataLife еще есть и БД для картинок. Там ИД новости и ссылки на картинки. И тут уже проще удалять.
источник

AP

Alexander Pavlenko 🌚... in Laravel Pro
к этому писал
источник

RK

Roman Kolosov in Laravel Pro
zVlad Nesquik
Меня больше интересует удаляение картинок. Если удаляю новость, то что бы удалялась и картинка.
И если много картинок для данного поста.
а зачем удалять пост прям удалять, есть же софт делит
источник

zN

zVlad Nesquik in Laravel Pro
Roman Kolosov
а зачем удалять пост прям удалять, есть же софт делит
Если его удаляем, то он не нужен вообще. А зачем просто деактивировать новость?) Это бред :) Ну, конечно, соц сети и другие все такое и используют. База это святое :) Но это не в моем случае. Если что мне не надо, то удалить надо все.
А то при переносе сайта база в несколько гигабайт. А по факту там на 800мб мусора :) А к этому мусору еще и картинки, которые на 20гиг :)
источник

RK

Roman Kolosov in Laravel Pro
ну тогда в observer запихнуть цикл который поудаляет связанные картинки сначала локально потом из бд
источник

RK

Roman Kolosov in Laravel Pro
public function deleting(Post $post)
{
   $post->images->each($image => Storage::delete($image->slug));

   Image::whereIn('id', $post->images->pluck('id'))->delete();
}

на 7.4 вообще в 2 строки)
источник

y

yu2ry in Laravel Pro
почему именно на 7.4? на 7.2 не две строки?
источник

RK

Roman Kolosov in Laravel Pro
стрелочная функция
источник

A

Arman in Laravel Pro
Roman Kolosov
public function deleting(Post $post)
{
   $post->images->each($image => Storage::delete($image->slug));

   Image::whereIn('id', $post->images->pluck('id'))->delete();
}

на 7.4 вообще в 2 строки)
контроллер? 🤔
источник

RK

Roman Kolosov in Laravel Pro
обсёрвер модели Post
источник

y

yu2ry in Laravel Pro
Roman Kolosov
public function deleting(Post $post)
{
   $post->images->each($image => Storage::delete($image->slug));

   Image::whereIn('id', $post->images->pluck('id'))->delete();
}

на 7.4 вообще в 2 строки)
а если у тебя удалится картинка на Image::whereIn эксепшен полетит)
источник

RK

Roman Kolosov in Laravel Pro
откуда?
источник

v

vladimir in Laravel Pro
Arman
Он не запрещает записывать, он разрешает заполнять автоматом (массовое заполнение !моделей!), и если не было значения в БД и не указывал явно, то будет NULL, которую 🤔 модель попытается записать в БД, чтоб ее текущее состояния (состояние атрибутов) было таким же как в БД, мало ли кто там успел что поменять
да, перечитал документацию, fillable используется только на этапе заполнения данных, а если attribute поле было добавлено иным путем оно не будет проверено. на этапе сохранения проверки не происходит
источник

RK

Roman Kolosov in Laravel Pro
в бд же просто слаги хранятся на файлы
источник

RK

Roman Kolosov in Laravel Pro
если связть many to many то можно дополнить
источник

RK

Roman Kolosov in Laravel Pro
public function deleting(Post $post)
{
   $post->images->each($image => Storage::delete($image->slug));


        $post->images()->sync([]);

   Image::whereIn('id', $post->images->pluck('id'))->delete();
}
источник

RK

Roman Kolosov in Laravel Pro
вроде как в поле images должна остаться коллекция
источник

RK

Roman Kolosov in Laravel Pro
кароче вот так что бы наверняка
public function deleting(Post $post)
{
   $images = $post->images;
   
   $post->images()->sync([]);
   
   $images->each($image => Storage::delete($image->slug));

   Image::whereIn('id', $images->pluck('id'))->delete();
}
источник