Cakephp媒体插件附件表

时间:2011-09-14 11:57:42

标签: cakephp-1.3 media

我想使用cakephp媒体插件(David Persson的https://github.com/davidpersson/media)上传文件并将它们附加到多个模型。

附件属于模型A,模型B等。

模型A HasMany附件

模型B HasMany附件

为了使Media.Coupler工作,文档说“basename”和“dirname”字段需要添加到模型中。当我向posts表添加basename和dirname时,我可以让插件工作。

后期模型的设置是:

// Attachments
var $hasMany = array( 'Attachment' => array( 
        'className' => 'Media.Attachment', 
        'foreignKey' => 'foreign_key', 
        'conditions'    => array('Attachment.model' => 'Post', 'Attachment.group' => 'post'),
        'dependent' => true, 
    ) 
); 

public $actsAs = array(
    'Media.Transfer',
    'Media.Generator',
    'Media.Coupler',    
);  

我注意到在安装并启动插件后,数据库有一个名为attachments的新表,可以用于此但没有数据保存到它???

CREATE TABLE `attachments` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`model` varchar(255) NOT NULL,
`foreign_key` int(10) NOT NULL,
`dirname` varchar(255) DEFAULT NULL,
`basename` varchar(255) NOT NULL,
`checksum` varchar(255) NOT NULL,
`group` varchar(255) DEFAULT NULL,
`alternative` varchar(50) DEFAULT NULL,
`created` datetime DEFAULT NULL,
`modified` datetime DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM; 

我不想在所有需要附件的模型中添加basename和dirname。

是否可以配置媒体插件以将上传保存到附件表并通过model + foreign_key链接它们?

有没有人成功使用媒体插件和这种设置?

1 个答案:

答案 0 :(得分:0)

我和你的情况类似,差别不大:

·模型A HasOne 附件

·模型B HasOne 附件

·我正在尝试使用this tutorial之后的jquery Fileuploader插件

嗯,我认为你的问题的答案是肯定的,在用这个插件搞砸了之后......你可以避免在你的A或B模型中添加basename和dirname,只是不要使用耦合器。我认为这是它唯一的功能,虽然我不确定......它只给了我一些我确定的问题。

我所做的是在创建帖子时手动将模型和foreign_key字段添加到附件模型。

如果您需要更多信息,我可以给您发电子邮件,

欢呼声