Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.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
Php 如何通过';属性';()?_Php_Mysql_Symfony_Doctrine Orm - Fatal编程技术网

Php 如何通过';属性';()?

Php 如何通过';属性';()?,php,mysql,symfony,doctrine-orm,Php,Mysql,Symfony,Doctrine Orm,我有一个实体 class Developer extends CustomUser { /** * @var string * * @ORM\Column(name="unsubscribe_token", type="string", length=60, nullable=true) */ private $unsubscribeToken; // ... } 和实体用户 class CustomUser {

我有一个实体

class Developer extends CustomUser
{

     /**
     * @var string
     *
     * @ORM\Column(name="unsubscribe_token", type="string", length=60, nullable=true)
     */
     private $unsubscribeToken;


    // ...
}
和实体用户

class CustomUser
 {

 /**
 * @var string
 *
 * @ORM\Column(name="role", type="string", length=25, nullable=false)
 * Assert\NotBlank
 */
protected $roles = 'ROLE_AGENT';


    // ...
}
和一个动作

public function indexAction()
{
    $role = 'ROLE_FREELANCER';

    $em = $this->getDoctrine()->getManager();

    $all_developer = $this->getDoctrine()->getRepository('ArtelProfileBundle:Developer')->findAll();

            $dev_freelancer = $em->getRepository('ArtelProfileBundle:Developer')
                    ->findBy(array('roles' => $role, 'level' => 'Middle', 'unsubscribeToken' => ??));
    return $this->render('ArtelProfileBundle:Dachboard:index.html.twig', array(
        'developer' => $all_developer,
        'developer_freelancer' => $dev_freelancer,
    ));
}

  public function getDevelopersWithRoleAndNullToken($role)
{
    $qb = $this->getEntityManager()->createQueryBuilder('d');
    $qb
        ->select('d')
        ->from('ArtelProfileBundle:Developer', 'd')
        ->where('d.role = :role')
        ->andWhere('d.token IS NOT NULL')
        ->setParameter('role', $role)
        ->getQuery();
    $query = $qb->getQuery();
    $results = $query->getResult();
    return $results;
}
[语义错误]第0行,第53列“role=:role”附近:错误:Class Artel\ProfileBundle\Entity\Developer没有名为role的字段或关联


在我的数据库manydeveloper中,我想找到所有扮演自由职业者和退订者角色的开发人员。我是怎么做到的?

FindBy会找到所有的,FindOneBy只有一个

所以

考虑到你的领域被称为角色,你必须这样做

$dev_freelancer = $em->getRepository('ArtelProfileBundle:Developer')->findBy(array('role' => $role));
这是你的文件

如果您想找到rol是自由职业者且令牌不为null的开发人员,您应该通过QueryBuilder进行查找,但无法通过NOTNULL值进行查找

像这样的

    public function getDevelopersWithRoleAndNullToken($role)
    {
        $qb = $this->getEntityManager()->createQueryBuilder('d');

        $qb
            ->select('d')
            ->from('ArtelProfileBundle\Entity\Developer', 'd')
            ->where('d.roles = :role')
            ->andWhere('d.unsubscribeToken IS NOT NULL')
            ->setParameter('role', $role)
            ->getQuery();

        return $qb->getResult();
    }
然后从控制器

$developersRolAndNullToken = $em->getRepository('ArtelProfileBundle:Developer')->getDevelopersWithRoleAndNullToken($role);

->findBy(array(**field**=>**value**))
将实现这一点。谢谢,非常简单,如果使用createQueryBuilder(),它可以实现吗?如果要使用queryBuilder,有两种方法,在控制器中创建查询生成器或在存储库文件中创建方法,然后从控制器中调用它(是我推荐给你的,控制器不应该知道这个逻辑)如果我有两个字段-角色和令牌,并且我希望所有拥有角色自由职业者和令牌的用户都为空?哦,对不起,不为空,你不能在findBy中这样做,我将更新我的回答No find getResult我修复`$query=$qb->getQuery();$results=$query->getResult();`但是我在CustomUser类和class Developer类中的字段角色扩展了CustomUser,现在
[语义错误]第0行,第53列“role=:role”附近:错误:Class Artel\ProfileBundle\Entity\Developer没有名为role的字段或关联
对不起,我的错误,请立即重试。您的字段名为roles而不是role,取消订阅Token而不是Token。您应该称它为role,它只是一个字符串,每个开发人员有一个rol,否则会造成混乱