Лучшая практика для получения определенного c изображения при вложении нескольких файлов в Octobercms - PullRequest
0 голосов
/ 28 мая 2020

моя система;

Я использую свой веб-сайт octobercms в качестве службы для своего мобильного приложения. Мобильные пользователи делают несколько фотографий и сохраняют их в своей учетной записи. Для этого я связываю каждого пользователя с его фотографиями с "отношениями вложений файлов" в моей модели пользователя.

public $attachMany = [
    'photos' => 'System\Models\File'
];

, когда они (пользователи) хотят обновить одну из фотографий;

I l oop все фотографии этого пользователя. Если я понимаю, что изображение правильное, используя условие if, я меняю его.

foreach ($model->photos as $photo) {
    if ( is $photo correct photo ) {
       // update process
    }
}

мой вопрос

Чтобы избежать зацикливания всего images with foreach;

Есть ли такой метод, как добавление ключа во время процесса сохранения, а затем фотографирование с помощью этого ключа? Или как лучше всего использовать этот процесс.

1 Ответ

3 голосов
/ 28 мая 2020

Вы можете просто использовать image ID для этого. когда вы создаете отношение attachMany, и если вы делаете $model->photos, он вернет вам collection of items(files) с его id. пожалуйста, проверьте прикрепленный снимок экрана.

enter image description here

Теперь, когда вы show images переходите в приложение на телефоне you can also attach that key (ID) to images и when user change image, with image data you can send image ID too

// on server side now you can simply find that image using
$photo = $model->photos()->find(<<-ID->>);
if($photo) {
    // if we have $photo then its correct one
    // now, update $photo
}
else { // wrong photo id for that user }

Примечание: пожалуйста, не используйте go прямо как System\Models\File::find(ID), поскольку это позволит пользователю обновить любое изображение. $model->photos()->find(ID) гарантирует, что photo of that $model(user) is only accessible.

если есть сомнения, прокомментируйте.

...