代码之家  ›  专栏  ›  技术社区  ›  vimuth

语法错误-第0行第50列:错误:需要字符串结尾,得到“.”

  •  0
  • vimuth  · 技术社区  · 8 年前

    嗨,我用的是symfony 4和district。这是我对教义的质疑。

    public function paginationQueryByAttributes($attributes) {
    
            $qb = $this->createQueryBuilder("c");
            $qb->select('c');
    
            if (array_key_exists('model_id', $attributes)) {
                $qb->leftJoin('c.model', 'm.id');
                $qb->andWhere('m.id = ' . $attributes['model_id']);
                unset($attributes['model_id']);
            } elseif (array_key_exists('brand_id', $attributes)) {
                $qb->leftJoin('c.model', 'm');
            }
    }
    

    这是我的汽车模型。

    <?php
    
    namespace App\Entity;
    
    use App\Model\BaseCar;
    use Doctrine\ORM\Mapping as ORM;
    use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
    use Symfony\Component\Validator\Constraints as Assert;
    use Swagger\Annotations as SWG;
    use JMS\Serializer\Annotation\Groups;
    
    /**
     * @ORM\Entity(repositoryClass="App\Repository\CarRepository")
     * @UniqueEntity("id")
     */
    class Car extends BaseCar
    {
        /**
         * @ORM\ManyToOne(targetEntity="App\Entity\Model",cascade={"refresh","merge"}, inversedBy="cars")
         * @ORM\JoinColumn(nullable=false)
         */
        protected $model;
    
        public function getModel()
        {
            return $this->model;
        }
    
        public /**
     * @param $
     */function setModel( $model)
        {
            $this->model = $model;
    
            return $this;
        }
    }
    

    我这样称呼仓库,

    $attributes = $request->request->all();
    
            $query = $this->getDoctrine()
                    ->getRepository(Car::class)
                    ->paginationQueryByAttributes($attributes);
    

    我得到这个错误。

    [语法错误]第0行,第50列:错误:需要字符串结尾,得到''。

    这是查询…

     SELECT c 
     FROM App\Entity\Car c 
       LEFT JOIN c.model m.id 
       LEFT JOIN m.brand b 
     WHERE m.id = 2 
       AND b.id = 1 
       AND c.code like :code 
       AND c.name like :name
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   Dirk J. Faber    8 年前

    加入你的行列 $qb->leftJoin('c.model', 'm.id'); 部分 m.id 现在是您的别名。将其更改为 $qb->leftJoin('c.model', 'm');

    推荐文章