Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Orm 将图像添加到“有多个关系”会将图像移动到“资源”文件夹_Orm_Content Management System_Silverstripe - Fatal编程技术网

Orm 将图像添加到“有多个关系”会将图像移动到“资源”文件夹

Orm 将图像添加到“有多个关系”会将图像移动到“资源”文件夹,orm,content-management-system,silverstripe,Orm,Content Management System,Silverstripe,我正在尝试创建一个与对象关联的图像列表。使用DataExtension添加有许多关系。这些图像存储在资产的子目录中,我使用cms中的“同步文件夹”按钮添加它们。但是,当我添加关系时,图像会移动到assets目录。如何在不移动文件的情况下创建关系?为什么会发生这种情况 class GroupExtension extends DataExtension { private static $has_many = array('ImageGroup' => 'Image');

我正在尝试创建一个与对象关联的图像列表。使用DataExtension添加有许多关系。这些图像存储在资产的子目录中,我使用cms中的“同步文件夹”按钮添加它们。但是,当我添加关系时,图像会移动到assets目录。如何在不移动文件的情况下创建关系?为什么会发生这种情况

class GroupExtension extends DataExtension
{
    private static $has_many = array('ImageGroup' => 'Image');

    function addImage($img)
    {
        $this->owner->ImageGroup()->add($img);
        $this->owner->write();
        $img->write();
    }
}
为此,您应该使用$many\u-many关系

$has\u many仅在图像上有关联的$has\u one时才起作用,虽然原则上您可以使用图像的子类来实现这一点,但实际上使用$many\u many会更好


如果您使用$many\u many,则不需要$img->write调用。

这里的罪魁祸首很可能是$img->write;查看此函数内部是否存在任何目录操作,例如将文件存储在默认目录中。如果是这种情况,请确保在调用此write函数之前将图像设置为保存在指定的子目录中。