0

Zend Framework 2からアルバムモジュールに柔軟性を追加しようとしています。そのプロセスで、フォームフィールドの1つ、特にアルバム名(私の場合はデータベースの列名)にバリデーターを設定しようとしています。タイトル。

私は自分の投稿に対する以前の回答の1つから検証の部分をフォローしてきました。これは、ここにあります。

私はalbumcontrollerクラスでそのクラスを次のように使用しています。

<?php

namespace Album\Controller;

use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;
use Album\Entity\Album\Album;
use Album\Form\AlbumForm;
use Album\Model\Album\AlbumExists;
use Doctrine\ORM\EntityManager;

class AlbumController
extends AbstractActionController
{
 public function addAction()
     {
        $form = new AlbumForm();
        $form->get('submit')->setAttribute('value', 'Add');

        $query = "SELECT a.title FROM Album\Entity\Album\Album a";
        $albumExists = new AlbumExists($this->getEntityManager(), $query, 'title');

        $request = $this->getRequest();
        if ($request->isPost())
        {
            $album = new Album();
            $form->setInputFilter($album->getInputFilter());
            $form->setData($request->getPost());
            $title = $this->getRequest()->getPost('title');

            if ($form->isValid() && $albumExists->isValid($title))
            {
                 $album->populate($form->getData());
                 $this->getEntityManager()->persist($album);
                 $this->getEntityManager()->flush();

                return $this->redirect()->toRoute('album');
            }
        }
        return array('form' => $form);
    }

すでにデータベースにあるアルバム名/タイトルを入力すると、次のようにエラーがスローされます。

An error occurred during execution; please try again later.  
Additional information:
Doctrine\ORM\Query\QueryException  

File:
C:\vendor\doctrine\orm\lib\Doctrine\ORM\Query\QueryException.php:69

Message:
Invalid parameter number: number of bound variables does not match number of tokens.

私が間違いを犯しているところはありますか?

4

1 に答える 1

0

「my」クラスを使用していて、その部分を変更していない場合は、クエリにWHERE条件がありません。

クラスでは、パラメーター:valueがバインドされているため、クエリでこのパラメーターを使用する必要があります(例WHERE a.title = :value)。

于 2012-09-11T12:00:32.810 に答える