注意:在这个问题中,我正在安装一个AWS PHP SDK api connection,尽管我的问题完全是关于CakePHP结构的。我使用的任何AWS术语都应该非常简单,如果你不熟悉AWS,这些术语只是为了演示我遇到的Cake问题。
我目前正在为我维护的CakePHP应用程序写一些新的表/实体,称为Files。它们表示存储在Amazon S3中的一个桶中的图像。Files包含一个名为'Key'的值,该值或多或少是Cake中my实体所表示的文件的文件名,与S3中的文件名相匹配。该实体如下所示:
<?php
class File extends Cake\ORM\Entity
{
protected $_accessible = [
'file_name' => true,
'key' => true,
'unique_id' => true,
'email_task_message_id' => true,
'email_task_message' => true,
];
}
我正在集成AWS PHP SDK,它允许我交换指向S3上的资源的pre-signed url的桶和文件名的名称(上面称为键,以匹配AWS术语)。此预先签名的url需要显示在任何文件实体上。
我想知道的是我应该在哪里将AWS PHP SDK调用集成到Cake模型结构中?
我想在File Entity(如上)上创建一个Cake Virtual Field。但是,一个查询中可能包含数百个文件,因此,据我所知,这将导致虚拟字段重新连接到每个文件的API。因此,我需要某种方法,将包含AWS PHP SDK连接的变量的示例化版本注入到生成的实体中。
或者,通过对表示File实体FilesTable的表/行为进行初始化调用来修改它是否更有意义?
提前感谢!
1条答案
按热度按时间ktca8awb1#
我不会在虚拟字段中执行主动查找,我认为只在数据已经存在的情况下使用它来处理简单的事情更传统。
我认为模型(或类似于表的对象)是更适合这样的代码的位置。
您可能会发现此问题对这一点很有用:Cakephp 3 - How to integrate external sources in table?
您可以创建自己的查找器(整齐地隐藏在行为中以分组您的逻辑),这些查找器按以下顺序将AWS数据与数据库数据组合在一起:
1.收集数据库数据,生成查找关键字数组
1.使用键数组执行单个远程查找
1.将远程数据与数据库数据合并。