使用对象方法的Doctrine querybuilder

时间:2017-07-02 14:26:30

标签: symfony doctrine-orm

我需要构建一个查询,返回所有以'ROLE_ADMIN'为角色的用户(我使用FOSUserBundle)。

我已经尝试了这个,但它不起作用,它抛出了我“警告:get_class()期望参数1是对象,给定布尔值”。

#!/usr/bin/perl

use strict;
use warnings;
use feature 'say';

use WWW::Mechanize;         
use Digest::MD5 qw(md5_hex);
use URI;

my $url = $ARGV[0];

if ($url !~ m{^https?://[^\W]+-?\.com/?}i) {
    exit(0);                         
}      

my $ua = WWW::Mechanize->new;
$ua->timeout( 10 );

$ua->get( $url );  

foreach ($ua->links) {
  say $_->url;
  say "Digest for the above URL is " . md5_hex($_->url) . "\n";
}

请注意,如果没有where条件,它可以正常工作,并且我在dabatase中返回了所有用户。

1 个答案:

答案 0 :(得分:2)

这是你应该如何调用where

public function getAdminQueryBuilder() {
    return $this->createQueryBuilder('u')
              ->where('u.hasRole = :role')
              ->setParameter('role', 'ROLE_ADMIN')
    ;
}

如果有问题,请告诉我。

编辑#2

请改为尝试:

public function getAdminQueryBuilder() {
    return $this->createQueryBuilder('u')
              ->where('u.roles LIKE :roles')
              ->setParameter('roles', '%ROLE_ADMIN%')
    ;
}

我认为它应该有用,但不确定。