gpt4 book ai didi

php - 在多对多关系中应用 doctrine sql filter

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:48:19 25 4
gpt4 key购买 nike

我的项目中有多对多关系(user_role、grades、user_role_grades)。但我也有一个要求不要从我的数据库中删除任何数据。所以,我在表中添加了一个状态列,连接 2 个表以创建多对多关系。现在我要上

 $userRole->getGrades() 

仅获取那些在联合表 (user_role_grades) 中没有状态“0”的记录。对于那些,我正在尝试使用 doctrine sql 过滤器。

namespace Bis\MpBundle\Filter;
use \Doctrine\ORM\Mapping\ClassMetaData;

class UserRoleGradeFilter extends \Doctrine\ORM\Query\Filter\SQLFilter
{
public function addFilterConstraint(ClassMetadata $targetEntity, $targetTableAlias)
{
if("Bis\DefaultBundle\Entity\UserRoleGrade" == $targetEntity->name){

return $targetTableAlias . '.status != 0';
}

return '';
}
}

因此,它被称为 Bis\DefaultBundle\Entity\UserRole,而不是 Bis\DefaultBundle\Entity\UserRoleGrade 实体。有人有什么想法吗?

或者您可能有其他想法,我该怎么做?

最佳答案

我不认为这是可能的,因为它直接附加 SQL。即使您会尝试 SQL 注入(inject)之类的操作:

return $targetTableAlias . '.status != 0)) LEFT join the_other_table ON  '
. $targetTableAlias . '.grades HAVING the_other_table.status = 0 ((';

它可能会在像 (()) 这样的语句上崩溃

关于php - 在多对多关系中应用 doctrine sql filter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12262164/

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