मुझे इस कोड को सिम्फनी 5 में एक क्वेरी बिल्डर में बदलने में मदद चाहिए।

$em = $this->getEntityManager();
$query = "SELECT * FROM fizuser where roles::text LIKE  :role";
$statement = $em->getConnection()->prepare($query);
$statement->bindValue('role', '%'.$role.'%');
$statement->execute();
$result = $statement->fetchAll();
return $result;

मैंने यही कोशिश की है:

function (UserRepository $er) {
  return $er->createQueryBuilder('u')
  ->where("u.roles :: text like '%a%'");

हालांकि, मैं "::" टैग का उपयोग नहीं कर सकता।

0
Kadmos 7 मार्च 2020, 17:04
आपका कॉलम नाम वास्तव में roles::text है?
 – 
Shaharia Azam
7 मार्च 2020, 17:22
कॉलम का नाम रोल्स है और कॉलम का प्रकार है json
 – 
Kadmos
7 मार्च 2020, 17:32

2 जवाब

आप इसके साथ कर सकते हैं -

return $this->createQueryBuilder('u')
            ->andWhere('u.roles LIKE :role')
            ->setParameter('role', '%'.'a'.'%')
            ->getQuery()
            ->getResult();
0
Shaharia Azam 7 मार्च 2020, 17:25
अनजाने में मेरे पास एक त्रुटि है: SQLSTATE [42883]: अपरिभाषित फ़ंक्शन: 7 त्रुटि: ऑपरेटर मौजूद नहीं है: जेसन ~~ अज्ञात लाइन 1: ... सक्रिय के रूप में सक्रिय_25 fizuser f0_ से जहां f0_. भूमिकाएं $ 1 की तरह हैं
 – 
Kadmos
7 मार्च 2020, 17:33

मैं कुछ विवरण जोड़ना चाहता हूं, psql में कॉलम प्रकार जेसन है। इस प्रकार के क्वेरी बिल्डर का उपयोग करने से मुझे त्रुटि मिलती है

SQLSTATE[42883]: Undefined function: 7 ERROR: operator does not exist: json ~~ unknown
LINE 1: ...ted AS activated_25 FROM fizuser f0_ WHERE f0_.roles LIKE $1
0
Kadmos 7 मार्च 2020, 17:37