2017-05-05 20 views
1

コントローラ内のデータをデータベースに格納しようとしたときにエラーが発生しました。私はすべての変数をチェックし、どれもnullではありません。INSERT INTOを使用したSQL要求でエラーが発生しました

SyntaxErrorException: An exception occurred while executing 'INSERT INTO message (message, vu, from, date, type, id_player) VALUES (?, ?, ?, ?, ?, ?)' with params ["ds", 0, "jean3", "2017-05-05 18:04:39", "message", 7]: 

そして私は私のtypageが間違っている可能性がなぜ、(文字列、ブール値、文字列、日時、文字列、int型)ことになって表示されていない:私は私のフォームを送信するときに、私はこのエラーを取得します。 intは外部キーですから、この最後の行(setIdPlayerとsetPlayer)のIDとエンティティintをコントローラに設定します。

public function carteAction(Request $request) 
 
    { 
 

 

 
     $player = $this->container->get("security.token_storage")->getToken()->getUser(); 
 
     $message = new Message; 
 
     //dump($player->getCharacters()); 
 
     
 

 
     $form = $this->createFormBuilder($message) 
 
      ->add('message', TextareaType::class, array('label' => 'Message :')) 
 
      ->add('registration', SubmitType::class, array('label' => 'Envoie du message')) 
 
      ->getForm(); 
 

 
     $form->handleRequest($request); 
 

 
     if($form->isSubmitted() && $form->isValid()) 
 
     { 
 
      if($request->query->has('to')) 
 
      { 
 
       dump("sending..."); 
 
       $message->setMessage($form['message']->getData()); 
 
       $message->setFrom($player->getUsername()); 
 
       $message->setVu(false); 
 
       $message->setDate(date_create()); 
 
       $message->setType("message"); 
 
       $to = $this->getDoctrine()->getRepository('AppBundle:Player') 
 
          ->findByPseudo($request->query->get('to'))[0]; 
 
       $id_to = $to->getId(); 
 
       dump($id_to); 
 
       dump($to); 
 
       $message->setIdPlayer($id_to); 
 
       $message->setPlayer($to); 
 
       
 
       //TODO : get to depuis la database et lui foutre le message 
 
       $em = $this->getDoctrine()->getManager(); 
 
       $em->persist($message); // prépare l'insertion dans la BD 
 
       $em->flush(); 
 
      } 
 
      
 

 

 
     } 
 
     
 
    }

その後、私のメッセージエンティティ:

<?php 
 

 
namespace AppBundle\Entity; 
 

 
use Doctrine\ORM\Mapping as ORM; 
 

 
/** 
 
* Message 
 
* 
 
* @ORM\Table(name="message") 
 
* @ORM\Entity(repositoryClass="AppBundle\Repository\MessageRepository") 
 
*/ 
 
class Message 
 
{ 
 
    /** 
 
    * @var int 
 
    * 
 
    * @ORM\Column(name="id", type="integer") 
 
    * @ORM\Id 
 
    * @ORM\GeneratedValue(strategy="AUTO") 
 
    */ 
 
    private $id; 
 

 
    /** 
 
    * @var string 
 
    * 
 
    * @ORM\Column(name="message", type="text") 
 
    */ 
 
    private $message; 
 

 
    /** 
 
    * @var bool 
 
    * 
 
    * @ORM\Column(name="vu", type="boolean") 
 
    */ 
 
    private $vu; 
 

 
    /** 
 
    * @var string 
 
    * 
 
    * @ORM\Column(name="from", type="string") 
 
    */ 
 
    private $from; 
 

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

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

 
    /** 
 
    * @var int 
 
    * @ORM\ManyToOne(targetEntity="Player", inversedBy="messages") 
 
    * @ORM\JoinColumn(name="id_player", referencedColumnName="id") 
 
    */ 
 
    private $player; 
 

 
    /** 
 
    * @var int 
 
    * @ORM\Column(name="id_player", type="integer") 
 
    */ 
 
    private $idPlayer; 
 

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

 
    /** 
 
    * Set message 
 
    * 
 
    * @param string $message 
 
    * 
 
    * @return Message 
 
    */ 
 
    public function setMessage($message) 
 
    { 
 
     $this->message = $message; 
 

 
     return $this; 
 
    } 
 

 
    /** 
 
    * Get message 
 
    * 
 
    * @return string 
 
    */ 
 
    public function getMessage() 
 
    { 
 
     return $this->message; 
 
    } 
 

 
    /** 
 
    * Set from 
 
    * 
 
    * @param string $from 
 
    * 
 
    * @return Message 
 
    */ 
 
    public function setFrom($from) 
 
    { 
 
     $this->from = $from; 
 

 
     return $this; 
 
    } 
 

 
    /** 
 
    * Get from 
 
    * 
 
    * @return string 
 
    */ 
 
    public function getFrom() 
 
    { 
 
     return $this->from; 
 
    } 
 

 
    /** 
 
    * Set vu 
 
    * 
 
    * @param boolean $vu 
 
    * 
 
    * @return Message 
 
    */ 
 
    public function setVu($vu) 
 
    { 
 
     $this->vu = $vu; 
 

 
     return $this; 
 
    } 
 

 
    /** 
 
    * Get vu 
 
    * 
 
    * @return bool 
 
    */ 
 
    public function getVu() 
 
    { 
 
     return $this->vu; 
 
    } 
 

 
    /** 
 
    * Set date 
 
    * 
 
    * @param \DateTime $date 
 
    * 
 
    * @return Message 
 
    */ 
 
    public function setDate($date) 
 
    { 
 
     $this->date = $date; 
 

 
     return $this; 
 
    } 
 

 
    /** 
 
    * Get date 
 
    * 
 
    * @return \DateTime 
 
    */ 
 
    public function getDate() 
 
    { 
 
     return $this->date; 
 
    } 
 

 
    /** 
 
    * Set type 
 
    * 
 
    * @param string $type 
 
    * 
 
    * @return Message 
 
    */ 
 
    public function setType($type) 
 
    { 
 
     $this->type = $type; 
 

 
     return $this; 
 
    } 
 

 
    /** 
 
    * Get type 
 
    * 
 
    * @return string 
 
    */ 
 
    public function getType() 
 
    { 
 
     return $this->type; 
 
    } 
 

 
    /** 
 
    * Set player 
 
    * 
 
    * @param \AppBundle\Entity\Player $player 
 
    * 
 
    * @return Message 
 
    */ 
 
    public function setPlayer(\AppBundle\Entity\Player $player = null) 
 
    { 
 
     $this->player = $player; 
 

 
     return $this; 
 
    } 
 

 
    /** 
 
    * Get player 
 
    * 
 
    * @return \AppBundle\Entity\Player 
 
    */ 
 
    public function getPlayer() 
 
    { 
 
     return $this->player; 
 
    } 
 

 
    /** 
 
    * Set idPlayer 
 
    * 
 
    * @param int $idPlayer 
 
    * 
 
    * @return Message 
 
    */ 
 
    public function setIdPlayer($idPlayer) 
 
    { 
 
     $this->idPlayer = $idPlayer; 
 

 
     return $this; 
 
    } 
 

 
    /** 
 
    * Get idPlayer 
 
    * 
 
    * @return int 
 
    */ 
 
    public function getIdPlayer() 
 
    { 
 
     return $this->idPlayer; 
 
    } 
 
}
はあなたの助けをありがとう

は、ここに私のコントローラです。

EDIT:私はidplayerなしで試しましたが、私は同じエラーがあります。

EDIT 2:私のプレーヤーのエンティティにいくつかのヌル値がありますか?しかし、私は彼らが何であるかは分かりません(これらはエンティティクラスにある値ではありません)。ここで私は、クエリを実行する前に、私のプレーヤーのために示した)(ダンプです:

Player {#496 ▼ 
    #id: 13 
    -pseudo: "jean3" 
    #email: "[email protected]" 
    #password: "0f22f0605b46b21c396d3aebe9b787bee7bbd3b31ca3548dfa5a8a6c2ec090de" 
    -dateLog: DateTime {#493 ▶} 
    -characters: PersistentCollection {#523 ▶} 
    -messages: PersistentCollection {#549 ▶} 
    #salt: "380c3fc630f46" 
    #_entityName: null 
    #_em: null 
    #_class: null 
} 

最後の3つのパラメータがnullですが、私はこれらの自分

+0

実際にはすべてがOKと思われる、いくつかのSQL GUIまたはMySQLのコンソールで直接そのクエリを実行し、それが言っているか見てみてください。 – num8er

+1

manytoOneのリレーションシップ属性として 'private'を使用する理由と、同じジョイン列を持つintegereとしてIdPlayerを使用する理由がわかりません。 'プレーヤーは十分です.'あなたは直接setPlayerを持つことができます –

+0

phpmyadminでこのクエリを試しても同じエラーが発生します –

答えて

3

を作成していないと述べたように私は、構文エラーがありました私は "date"というカラムを持っているので、それはSQLの予約語です!だから私はちょうど私のコラムの名前を変更し、それは動作します。

EDIT:!それからのためにとタイプ...

関連する問題