Symfony3 / Doctrine从我的数据库加载数据后如何执行一些代码?

时间:2016-07-25 05:22:48

标签: doctrine-orm twig symfony

我来自Kohana背景,并且已经提出了一些与我遇到的问题有关的问题,并且需要了解如何完成这项工作。我对Symfony和Doctrine非常陌生,喜欢学习新的框架和正确的编码方法。然而,我发现Doctrine ORM令人沮丧地使用但功能强大。

所以这是我的基本问题,我会尽量简短。我有一个products表和一个products_images表。通过遵循Symfony的教程,我已经能够为两者创建实体并映射关系,生成getter和setter,创建Repositories以及整个位。但这里它变得粘稠......

product_images表只包含图像的名称,而不是路径,如果我要在html中构建和使用href,我显然需要它。产品表填充了产品,通过网页爬行并以该方法获取产品,并且作为要求我写他们的网站的人,我需要将图像分成目录,这些目录代表他们从中抓取的位置。图像的位置经常变化,所以我不想将路径存储在数据库中。

所以为了让我的问题变得简单,我需要做什么,不知何故,在某种程度上,是编写一些逻辑来检查图像被抓取的位置,然后构造一个路径字符串以传递给我的树枝模板,然后追加image name ... all以创建有效的图像标记或href。

我为此找到解决方案的最后一次尝试是修改实体中图像名称的getter,但由于我使用createQueryBuilder()来执行某些DQL,因此看起来没有使用getter我没有什么可继续的。我在官方的Doctrine网站上找不到任何有助于我解决这个问题的文档,我只需要知道如何克服这个问题。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

如果path是静态的,则doctrine与您的问题无关,您可以使用常量或参数来定义它。

然后你必须添加一个getter

getImageWebPath() {
   return self::PRODUCT_WEB_PATH. $this->getImageName();
}

如果图像存储在一个参数中,你可以使用很多工具:twig函数,它会在你的图像名称之前附加路径,服务设置你的实体的路径或者直接得到twig参数...等等。