2017-06-08 24 views
0

どのようにして現在の投稿を取得できますか?私は自分の現在の投稿にリダイレクトしようとしていますが、私の投票を送信していますが、この方法では、このユーザーが作成した最古の投稿へのリダイレクトを作成しました。現在のトピックを取得

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); 


} 

編集:私のソリューションを追加しました。

ソリューション

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

何がpuntuacioですか?少しだけコードを表示 –

+0

私はそれを翻訳するのを忘れてしまった。 – Pillow

+0

1. 'id_posterUser'が有効かどうかチェックしましたか? 2.トピックスラグはユニークですか? 3.パス 'discutea_forum_post'の別のアクションに問題があり、コードを表示してください。 – miikes

答えて

1

あなたは、ユーザーがトピックを検索している:

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

findOneByUserは - あなたが発注を追加する必要があり、最後のトピックを取得するためのクエリWHERE user.id = :user_id LIMIT 1

を構築します。

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

Yesss thats it !!!私は本当にあなたの助けを感謝します。すべてのお手伝いをありがとう。 – Pillow

+0

唯一の問題は、投稿の作者ではない他のユーザーに投票することができないことです。 – Pillow

+1

アクションロジックを変更する必要があります。トピックのidをリクエストに渡すか、パスに渡して、最終著者のトピックではなく、実際のIDでトピックを取得します。 – miikes