gpt4 book ai didi

mysql - 如何合并重复的代码,一个实例在 PHP 中,另一个实例在 Doctrine Query Builder 中?

转载 作者:行者123 更新时间:2023-11-29 12:12:42 25 4
gpt4 key购买 nike

我正在使用 Symfony2 和 Doctrine。

我有一个 Foo 对象,它是一个 Doctrine 实体。在此对象中,我需要一个名为 bar 的信息,我通过实体属性(即数据库字段)进行长时间计算获得该信息。

代码(简短版本)如下所示:

class Foo {

public __construct() {
computeBarValue();
}

private computeBarValue() {
$this->bar = /*long computation from other attributes*/ ;
}
}

但是现在,它发生了我还需要这个计算来过滤我向 Doctrine 发出的一些请求的结果。可以这样写:

class FooRepository extends EntityRepository {

public function myFilteredQuery() {
//...
$queryBuilder = $this->_em->createQueryBuilder()
->select('a')
->from($this->_entityName, 'a')
->where( /*long computation from other fields*/ );
//...
}
}

问题是,由于计算代码又长又复杂,并且将来可能会发生变化,所以我不想重复它,其中一次出现在实体中,另一次出现在查询构建器定义中(如上所示)。我搜索过是否可以使用 Doctrine 添加“虚拟”计算列(这里我将添加一个 bar 列),但这似乎是不可能的。

有没有办法合并/分解所有这些?

最佳答案

实体只是数据持有者,任何有关查询的内容都应该进入存储库

我希望这会有所帮助。

关于mysql - 如何合并重复的代码,一个实例在 PHP 中,另一个实例在 Doctrine Query Builder 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30383498/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com