2017-05-06 4 views
0

Ich habe diesen Fehler auf Symfony 3, ich verwende eine Entität in eine Entität zum Einfügen einer Zeile mit FK in eine andere Tabelle, in diesem Fall $ video enthalten $ user (user_id):Fehler in Doctrine Flush -> null var auf Entität

trat eine Ausnahme ‚INSERT INTO Videos (Titel Ausführung Beschreibung, Status, Bild, video_path, created_at, updated_at, user_id) VALUES (,,,,,????? "?,?)" mit Parametern ["titulo del video1", null, null, null, null, "2017-05-06 08:10:16", "2017-05-06 08:10:16" , null]:

SQ LSTATE [23000]: Integrität Einschränkungsverletzung: 1048 Spalte ‚user_id‘ kann nicht null sein

Ich habe eine Menge von null von $ Benutzerdaten in den var $ Video ... schauen die Dump am Ende der Post

  $user_id = ($identity->sub != null) ? $identity->sub : null; 

      $title = (isset($params->title)) ? $params->title : null; 
      $description = (isset($params->description)) ? $params->description : null; 
      $status = (isset($params->status)) ? $params->status : null; 
      if ($user_id != null && $title != null) { 
       $em = $this->getDoctrine()->getManager(); 
       $user = $em->getRepository("BackendBundle:User")->findOneBy(
         array(
          "id" => $user_id 
       )); 

       $video = new Video(); 
       $video->setUser($user); 
       $video->setTitle($title); 
       $video->setDescription($description); 
       $video->setStatus($status); 
       $video->setCreatedAt($createdAt); 
       $video->setUpdatedAt($updatedAt); 
       var_dump($video); 
       $em->persist($video); 
       $em->flush(); 

var_dump von $ Video:

object(BackendBundle\Entity\Video)#313 (10) { 
    ["id":"BackendBundle\Entity\Video":private]=> 
    NULL 
    ["title":"BackendBundle\Entity\Video":private]=> 
    string(17) "titulo del video1" 
    ["description":"BackendBundle\Entity\Video":private]=> 
    NULL 
    ["status":"BackendBundle\Entity\Video":private]=> 
    NULL 
    ["image":"BackendBundle\Entity\Video":private]=> 
    NULL 
    ["videoPath":"BackendBundle\Entity\Video":private]=> 
    NULL 
    ["createdAt":"BackendBundle\Entity\Video":private]=> 
    object(DateTime)#281 (3) { 
    ["date"]=> 
    string(26) "2017-05-06 08:10:16.255330" 
    ["timezone_type"]=> 
    int(3) 
    ["timezone"]=> 
    string(12) "Europe/Paris" 
    } 
    ["updatedAt":"BackendBundle\Entity\Video":private]=> 
    object(DateTime)#282 (3) { 
    ["date"]=> 
    string(26) "2017-05-06 08:10:16.255350" 
    ["timezone_type"]=> 
    int(3) 
    ["timezone"]=> 
    string(12) "Europe/Paris" 
    } 
    ["user":"BackendBundle\Entity\Video":private]=> 
    object(BackendBundle\Entity\User)#317 (8) { 
    ["id":"BackendBundle\Entity\User":private]=> 
    int(8) 
    ["role":"BackendBundle\Entity\User":private]=> 
    string(4) "user" 
    ["name":"BackendBundle\Entity\User":private]=> 
    string(7) "Pruebas" 
    ["surname":"BackendBundle\Entity\User":private]=> 
    string(7) "Pruebas" 
    ["email":"BackendBundle\Entity\User":private]=> 
    string(19) "[email protected]" 
    ["password":"BackendBundle\Entity\User":private]=> 
    string(64) "718e3978516d387924d91980a7e21af2f434de445731951a6585bda2eacef046" 
    ["image":"BackendBundle\Entity\User":private]=> 
    string(14) "1494043934.png" 
    ["createdAt":"BackendBundle\Entity\User":private]=> 
    object(DateTime)#314 (3) { 
     ["date"]=> 
     string(26) "2017-05-05 10:05:36.000000" 
     ["timezone_type"]=> 
     int(3) 
     ["timezone"]=> 
     string(12) "Europe/Paris" 
    } 
    } 
    ["User":"BackendBundle\Entity\Video":private]=> 
    NULL 
} 

Blick auf $ video [ "user"] es ist voll, warum ich die Nullen auf Flush so? Wer weiß warum?

Videos Entity setUser Methode

public function setUser(\BackendBundle\Entity\User $user = null) 
    { 
    $this->user = $user; 

    return $this; 
    } 

Beziehung Videos zu Benutzern DB

manyToOne: 
    User: 
     targetEntity: User 
     cascade: { } 
     fetch: LAZY 
     mappedBy: null 
     inversedBy: null 
     joinColumns: 
      user_id: 
       referencedColumnName: id 
     orphanRemoval: false 
+1

können Sie die Definition von Spalten mit Beziehungen zeigen? Von Benutzer- und Videoeinheiten. – miikes

+0

mit mehr Code aktualisiert, ty! – Sk8eR

Antwort

2

Ändern Sie den Feldnamen User in user.

user: 
    targetEntity: User 

Ganze Einstellungen:

manyToOne: 
    user: 
     targetEntity: User 
     cascade: { } 
     fetch: LAZY 
     mappedBy: null 
     inversedBy: null 
     joinColumns: 
      user_id: 
       referencedColumnName: id 
     orphanRemoval: false 

Sie sollten auch Befehl für die Prüfung ausgeführt werden, wenn alle Beziehungen gültig sind gesetzt:

php bin/console doctrine:schema:validate

+0

user: targetEntity: Benutzer >>> Ich ändere das und funktioniert ohne die cmd ty ausführen! n1 – Sk8eR

0

Sie wahrscheinlich in Ihrer Benutzer-Einheit müssen unter addVideo (Video $ Video) {...} ein $ Video hinzufügen -> setUser ($ this) ;.

Wie Sie sehen, ist die letzte Zeile Ihres var_dump null.

+0

Aber das ist "User", es ist die Entity, die Var "user" ist es füllen ... – Sk8eR

Verwandte Themen