欢迎任何想法/反馈:)我在如何上遇到了问题处理业务逻辑我的周围Doctrine2实体在大Symfony2应用程序.(抱歉帖子太长了)在阅读了许多博客、食谱和其他资源后,我发现:实体可能仅用于数据映射持久性(“贫血模型”),Controller必须尽可能纤薄,域模型必须与持久层解耦(实体不知道实体管理器)好的,我完全同意,但是:在哪里以及如何处理域模型上的复杂业务规则?一个简单的例子我们的域名模型:aGroupcanuseRolesaRolecanbeusedbydifferentGroupsaUsercanbelongtomanyGroupswithmanyRoles,在SQL持久层,
欢迎任何想法/反馈:)我在如何上遇到了问题处理业务逻辑我的周围Doctrine2实体在大Symfony2应用程序.(抱歉帖子太长了)在阅读了许多博客、食谱和其他资源后,我发现:实体可能仅用于数据映射持久性(“贫血模型”),Controller必须尽可能纤薄,域模型必须与持久层解耦(实体不知道实体管理器)好的,我完全同意,但是:在哪里以及如何处理域模型上的复杂业务规则?一个简单的例子我们的域名模型:aGroupcanuseRolesaRolecanbeusedbydifferentGroupsaUsercanbelongtomanyGroupswithmanyRoles,在SQL持久层,
注意:如果我想要的是不可能的,“不可能”的答案将被接受在Doctrine2documentationaboutinheritancemapping,它说有两种方法:单表继承(STI)类表继承(CTI)两者都有警告:IfyouuseaSTI/CTIentityasamany-to-oneorone-to-oneentityyoushouldneveruseoneoftheclassesattheupperlevelsoftheinheritancehierachyas“targetEntity”,onlythosethathavenosubclasses.OtherwiseDoctrin
注意:如果我想要的是不可能的,“不可能”的答案将被接受在Doctrine2documentationaboutinheritancemapping,它说有两种方法:单表继承(STI)类表继承(CTI)两者都有警告:IfyouuseaSTI/CTIentityasamany-to-oneorone-to-oneentityyoushouldneveruseoneoftheclassesattheupperlevelsoftheinheritancehierachyas“targetEntity”,onlythosethathavenosubclasses.OtherwiseDoctrin
我有Doctrine的实体:我需要这样查询:select*from`orders`where`OrderEmail`='some@mail.com'and`Product`LIKE'MyProducts%'我尝试处理不喜欢的查询:$em->getRepository("Orders")->findByEmailAndProduct($uname,$product);但它会出错。为什么?我可以在没有DQL的情况下执行此查询吗?我想让这个查询使用魔术方法findBy** 最佳答案 这对于神奇的find方法是不可能的。尝试使用queryb
我有Doctrine的实体:我需要这样查询:select*from`orders`where`OrderEmail`='some@mail.com'and`Product`LIKE'MyProducts%'我尝试处理不喜欢的查询:$em->getRepository("Orders")->findByEmailAndProduct($uname,$product);但它会出错。为什么?我可以在没有DQL的情况下执行此查询吗?我想让这个查询使用魔术方法findBy** 最佳答案 这对于神奇的find方法是不可能的。尝试使用queryb
嗨我有以下查询,但它似乎不起作用。$q=$this->em->createQueryBuilder()->update('models\User','u')->set('u.username',$username)->set('u.email',$email)->where('u.id=?1')->setParameter(1,$editId)->getQuery();$p=$q->execute();这将返回以下错误消息:Fatalerror:Uncaughtexception'Doctrine\ORM\Query\QueryException'withmessage'[Semant
嗨我有以下查询,但它似乎不起作用。$q=$this->em->createQueryBuilder()->update('models\User','u')->set('u.username',$username)->set('u.email',$email)->where('u.id=?1')->setParameter(1,$editId)->getQuery();$p=$q->execute();这将返回以下错误消息:Fatalerror:Uncaughtexception'Doctrine\ORM\Query\QueryException'withmessage'[Semant
假设我有实体$e。是否有任何通用方法将其存储为另一行,这将具有相同的实体数据但另一个主键?为什么我需要这个:我正在实现某种TemporalDatabase架构,而不是更新行,我只需要创建另一个。 最佳答案 尝试克隆并将以下方法添加到您的实体中publicfunction__clone(){$this->id=null;}您可能需要detach在持久化实体之前。我现在手头没有我的开发机器来测试这个。$f=clone$e;$em->detach($f);$em->persist($f);$em->flush();更新刚刚尝试使用一个简单
假设我有实体$e。是否有任何通用方法将其存储为另一行,这将具有相同的实体数据但另一个主键?为什么我需要这个:我正在实现某种TemporalDatabase架构,而不是更新行,我只需要创建另一个。 最佳答案 尝试克隆并将以下方法添加到您的实体中publicfunction__clone(){$this->id=null;}您可能需要detach在持久化实体之前。我现在手头没有我的开发机器来测试这个。$f=clone$e;$em->detach($f);$em->persist($f);$em->flush();更新刚刚尝试使用一个简单