Doctrine querybuilder 不适用于我在 PHP 中的 SQL 语句

问题描述

请原谅我,我对编程还很陌生。

基本上,我试图运行 sql 语句而不使其容易受到 sql 注入的影响

我尝试运行我的代码,但这里有问题:

$manager = this->getDoctrine()->getManager();
$builder = $manager->getRepository('AppBundle:User')->createqueryBuilder('u');
$builder->select('*')
        ->from('home_users','u')
        ->where(u.username LIKE :pattern');
$query = $builders->getQuery();
$query->setParameter('pattern',"%pattern%");
$users = $query->getResult();

我正在尝试使用本指南中的 Doctrine QueryBuilder:https://www.doctrine-project.org/projects/doctrine-orm/en/2.7/reference/query-builder.html

任何帮助将不胜感激

解决方法

  • 为您提供解决方案

    this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
  • 您可以对 Evolution Reutilisation、干净代码和最佳实践进行一些改进

  1. 在用户存储库中

    $pattern ="You pattern her";
    
    $manager      = this->getDoctrine()->getManager();
    $userRepo     = $manager->getRepository('AppBundle:User');
    $queryBuilder = $userRepo->createQueryBuilder('u');
    
    $queryBuilder->select('u')
          ->where('u.username LIKE :pattern')
          ->setParameter('pattern','%'.$pattern.'%');
    
    $users = $queryBuilder->getQuery()->getResult();
    
  2. 在控制器中

     public function findUsersLikePattern(string $pattern = null)
     {
         $queryBuilder = $this->createQueryBuilder('u')
                               ->select('u');
    
         if ($pattern) {
             $queryBuilder
                 ->where('u.username LIKE :pattern')
                 ->setParameter('pattern','%' . $pattern . '%');
    
         }
    
         return $queryBuilder->getQuery()->getResult();
    
     }