在 Octobercms 中获取多文件附件特定图像的最佳实践

Best Practice for get specific image on multi file attachments in Octobercms

我的系统;

我将我的 octobercms 网站用作我的移动应用程序的服务。移动用户拍摄多张照片并将它们保存在自己的帐户中。为此,我在我的用户模型中将每个用户与他们的照片相关联 "file attachments relationship"。

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

当他们(用户)想要更新其中一张照片时;

我循环那个用户的所有照片。如果我理解图片是使用 if 条件的正确图片,我正在更改它。

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

我的问题

避免使用 foreach 循环所有图像;

有没有在保存过程中添加密钥,然后用密钥拍照的方法? 或者这个过程的最佳实践是什么。

您只需使用 image ID 即可。当你建立 attachMany 关系时,如果你建立 $model->photos 关系,它将 return 你 collection of items(files) 及其 id。请查看随附的屏幕截图。

Now, when you show images to your phone app you can also attach that key (ID) to images and 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 }

Note: please do not go directly like System\Models\File::find(ID) as it will allow user to update any image. $model->photos()->find(ID) ensures that photo of that $model(user) is only accessible.

如有疑问请评论。