2017-06-08 4 views
0

Wie erhalte ich den aktuellen Post? Ich versuche, zu meinem aktuellen Post umzuleiten, wo ich meine Stimme absende, aber diese Methode, die ich umadressiert habe, an den ältesten von diesem Benutzer erstellten Beitrag.Aktuelles Thema erhalten

public function ScoreAction(Request $request){ 

    $em = $this->getDoctrine()->getManager(); 

    $idPoster = $request->request->get('id_posterUser'); 
    $positive= $request->request->get('positive'); 
    $negative= $request->request->get('negative'); 

    $user= $em->getRepository(User::class)->findOneById($idPoster); 


    $topic = $em->getRepository(Topic::class)->findOneByUser($user->getId()); 

    $score = $usuari->getReputation(); 

    if ($positive!= null) { 
     $score = $score + 1; 
    } 
    if($negative!= null){ 
     $score = $score - 1; 
    } 

    $user->setReputation($score); 
    $em->persist($user); 
    $em->flush(); 

    $redirect = $this->generateUrl('discutea_forum_post', array('slug' => $topic->getSlug())); 

return $this->redirect($redirect); 


} 

Bearbeiten: Meine Lösung hinzugefügt.

Lösung:

public function ScoreAction(Request $request){ 

     $em = $this->getDoctrine()->getManager(); 

     $idTopic = $request->request->get('id_topic');  

     $idPoster = $request->request->get('id_poster'); 

     $positive= $request->request->get('positive'); 
     $negative= $request->request->get('negatiu'); 

     $user= $em->getRepository(User::class)->findOneById($idPoster); 

     $topic = $em->getRepository(Topic::class)->findOneById($idTopic); 


     $score= $user->getReputation(); 

     if ($positive!= null) { 
      $score= $score+ 1; 
     } 
     if($negative!= null){ 
      $score= $score- 1; 
     } 

     $user->setReputation($score); 
     $em->persist($user); 
     $em->flush(); 


     $redirect = $this->generateUrl('discutea_forum_post', array('slug' => $topic->getSlug())); 

     return $this->redirect($redirect); 
    } 
+0

was ist puntuacio, was ist das Thema? Zeige ein bisschen mehr Code –

+0

Sorry, ich habe vergessen, es zu übersetzen schlecht bearbeiten. – Pillow

+0

1. Haben Sie überprüft, ob 'id_posterUser' gültig ist? 2. Ist das Thema Schnecke einzigartig? 3. Problem mit einer anderen Aktion mit Pfad 'discutea_forum_post', Code anzeigen. – miikes

Antwort

1

Sie suchen Thema von Benutzer:

$topic = $em->getRepository(Topic::class)->findOneByUser($user->getId()); 

findOneByUser - Abfrage baut WHERE user.id = :user_id LIMIT 1

das letzte Thema Sie Bestellung hinzufügen müssen erhalten für.

$topic = $em->getRepository(Topic::class)->findOneBy(
    array('user' => $user), 
    array('id' => 'desc') 
); 
+0

Yesss das ist es !!! Ich schätze deine Hilfe sehr. Danke an alle, die geholfen haben. – Pillow

+0

Das einzige Problem ist, dass ich nicht anderen Benutzer wählen kann, die nicht der Autor eines Beitrags sind. – Pillow

+1

Sie müssen also die Aktionslogik ändern. Übergeben Sie die Topic-ID in der Anfrage oder übergeben Sie sie im Pfad und rufen Sie das Topic ab, indem Sie die richtige ID verwenden, nicht nur das Thema des letzten Autors. – miikes

Verwandte Themen