1

ユーザーの検索結果を自分の Web サイトに保存したいと考えています。そのため、クラス ユーザーがいて、検索クラスを作成したいと考えています。私はそれをしました:

class Search 
{

    public function __construct()
    {
        $this->searched_date = new \Datetime(); 
    }

    /**
    * @ORM\Id
    * @ORM\Column(type="integer")
    * @ORM\GeneratedValue
    */
    private $id;


    /**
    * @ORM\Id
    * @ORM\ManyToOne(targetEntity="test\UserBundle\Entity\User")
    */
    private $user;

    /**
    * @ORM\Column(name="termsearch", type="string", length=255, nullable="true")
    */
    private $termsearch;

    /**
     * @ORM\Column(name="goodtitle", type="string", length=255, nullable="true")
     */
    private $goodtitle;

    /**
    * @ORM\Column(name="searched_date", type="datetime")
    */
    private $searched_date;



    /**
     * Set termsearch
     *
     * @param text $termsearch
     */
    public function setTermsearch($termsearch)
    {
        $this->termsearch = $termsearch;
    }

    /**
     * Get termsearch
     *
     * @return text 
     */
    public function getTermsearch()
    {
        return $this->termsearch;
    }

    /**
     * Set searched_date
     *
     * @param datetime $searchedDate
     */
    public function setSearchedDate($searchedDate)
    {
        $this->searched_date = $searchedDate;
    }

    /**
     * Get searched_date
     *
     * @return datetime 
     */
    public function getSearchedDate()
    {
        return $this->searched_date;
    }

    /**
     * Set user
     *
     * @param test\UserBundle\Entity\User $user
     */
    public function setUser(\test\UserBundle\Entity\User $user)
    {
        $this->user = $user;
    }

    /**
     * Get user
     *
     * @return test\UserBundle\Entity\User 
     */
    public function getUser()
    {
        return $this->user;
    }

    /**
     * Set goodtitle
     *
     * @param text $goodtitle
     */
    public function setGoodtitle($goodtitle)
    {
        $this->goodtitle = $goodtitle;
    }

    /**
     * Get goodtitle
     *
     * @return text 
     */
    public function getGoodtitle()
    {
        return $this->goodtitle;
    }

    /**
     * Get id
     *
     * @return integer 
     */
    public function getId()
    {
        return $this->id;
    }
}

そして、私はそのように挿入したいと思います:

$em = $this->getDoctrine()->getEntityManager();
$user = $em->getRepository('TestUserBundle:User')->find($currentuser->getID());     
$search = new Search();
$search->setUser($user);
$search->setTermsearch($termsearch);
$search->setGoodtitle($goodtitle);
$em->persist($search);
$em->flush();

残念ながら、私はこのエラーがあります:

SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens (500 Internal Server Error)

スタックには、次のことがわかります。

INSERT INTO s_search (user_id, termsearch, goodtitle, searched_date) VALUES (?, ?, ?, ?) ({"1":"c2c","2":"C2C Down The Road","3":{"date":"2012-10-31 00:18:47","timezone_type":3,"timezone":"Europe\/Paris"}})

このクラスを作成する方法がわかりません 検索... 助けてくれてありがとう !

4

1 に答える 1

0

@ORM\Idas @ManyToOne マッピング参照から削除するに$userは、型は必要ありません。詳細については、 Doctrine の注釈リファレンスを参照してください。Doctrine は、別のエンティティへの参照を保持するために正しい列タイプを処理します。

また、 User クエリが実際に有効な を返すことも確認してください$user。検索に がない可能性がある場合は、注釈を$user使用して、列が null 可能であることを主張します。@JoinColumn別の SO の質問を参照してくださいDoctrine 2 can't use nullable=false in manyToOne relationship?

于 2012-11-04T19:42:47.847 に答える