как кормить мои индикаторы выполнения с моими данными из базы данных с помощью ветки в Symfony - PullRequest
0 голосов
/ 04 декабря 2018

Я сделал небольшую систему обозначений на 5 с кнопками радио, и я записал эти голоса в рейтинг своей таблицы со значением в качестве значения примечания и nbrrate в качестве количества голосов, теперь на странице сведений о враче,Я хочу увидеть различные заметки, которые он получил, а также общее среднее количество голосов, как это показано на картинке the progress Bar

Вот изображение моей таблицы рейтинга: picture of my rating

Веточка

  <div class="row">
    <div class="col-lg-3">
        <div id="review_summary">
            <strong>4.7</strong>
            <div class="rating">
                <i class="icon_star voted"></i>
                <i class="icon_star voted"></i>
                <i class="icon_star voted"></i>
                <i class="icon_star voted"></i>
                <i class="icon_star"></i>
            </div>
            <small>Based on 4 reviews</small>
        </div>
    </div>
    <div class="col-lg-9">
        <div class="row">
            <div class="col-lg-10 col-9">
                <div class="progress">
                    <div class="progress-bar" role="progressbar" style="width: 90%" aria-valuenow="90" aria-valuemin="0" aria-valuemax="100">
                    </div>
                </div>
            </div>
            <div class="col-lg-2 col-3">
                <small><strong>5 stars</strong></small>
            </div>
        </div>
        <div class="row">
            <div class="col-lg-10 col-9">
                <div class="progress">
                    <div class="progress-bar" role="progressbar" style="width: 95%" aria-valuenow="95" aria-valuemin="0" aria-valuemax="100">
                    </div>
                </div>
            </div>
            <div class="col-lg-2 col-3">
                <small><strong>4 stars</strong></small>
            </div>
        </div>
        <!-- [..] 3/2/1 star rows -->
    </div>
</div>

Рейтинг субъекта

   class Rating
{
/**
 * @var int
 *
 * @ORM\Column(name="id", type="integer")
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="AUTO")
 */
private $id;

/**
 * @var int
 *
 * @ORM\Column(name="rate", type="integer")
 */
protected $rate;

/**
 * @var int
 *
 * @ORM\Column(name="nbrrate", type="integer")
 */
protected $nbrrate;

 /**
 * @ORM\ManyToOne(targetEntity="Doctix\MedecinBundle\Entity\Medecin", inversedBy="ratings")
 * @ORM\JoinColumn(nullable=true)
 */
protected $medecin;

/**
 * @ORM\ManyToOne(targetEntity="Doctix\PatientBundle\Entity\Patient", inversedBy="ratings")
 * @ORM\JoinColumn(nullable=true)
 */
protected $patient;


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

/**
 * Set rate
 *
 * @param integer $rate
 *
 * @return Rating
 */
public function setRate($rate)
{
    $this->rate = $rate;

    return $this;
}

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

/**
 * Set medecin
 *
 * @param \Doctix\MedecinBundle\Entity\Medecin $medecin
 *
 * @return Rating
 */
public function setMedecin(\Doctix\MedecinBundle\Entity\Medecin $medecin = null)
{
    $this->medecin = $medecin;

    return $this;
}

/**
 * Get medecin
 *
 * @return \Doctix\MedecinBundle\Entity\Medecin
 */
public function getMedecin()
{
    return $this->medecin;
}

/**
 * Set patient
 *
 * @param \Doctix\PatientBundle\Entity\Patient $patient
 *
 * @return Rating
 */
public function setPatient(\Doctix\PatientBundle\Entity\Patient $patient = null)
{
    $this->patient = $patient;

    return $this;
}

/**
 * Get patient
 *
 * @return \Doctix\PatientBundle\Entity\Patient
 */
public function getPatient()
{
    return $this->patient;
}


 /**
 * Set nbrrate
 *
 * @param integer $nbrrate
 *
 * @return Rating
 */
public function setNbrrate($nbrrate)
{
    $this->nbrrate = $nbrrate;

    return $this;
}

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

Контроллер

   public function appreciateAction(Request $request, Booking $bookings)
 {
        $em = $this->getDoctrine()->getEntityManager();

     if ($request->isMethod("POST")) {


       $medecin = $bookings->getMedecin();
       $patient = $bookings->getPatient();
       $rate = $request->get('rate');
       $comment = $request->get('comment');

      $bookings = $em->getRepository("DoctixFrontBundle:Booking")- 
                >findBy(array(
                             "patient" => $patient));

      $comments = new Comment();
      $comments->setMedecin($medecin);
      $comments->setPatient($patient);
      $comments->setComment($comment);

     $rateExists = $em->createQuery('SELECT r.id FROM 
     DoctixMedecinBundle:Rating r WHERE r.medecin = :medecin')
              ->setParameter('medecin', $medecin)
              ->getResult();

           if ($rateExists != null) {
             $q = $em->createQuery('UPDATE DoctixMedecinBundle:Rating r SET r.rate = r.rate + '.$rate.', r.nbrrate = r.nbrrate + 1 WHERE r.medecin = ?1')
                  ->setParameter(1, $medecin);
                $q->execute();
                     }else {            
                               $newRate = new Rating;
                              $newRate->setMedecin($medecin);
                              $newRate->setPatient($patient);
                              $newRate->setRate($rate);
                              $newRate->setNbrrate(1);
                              $em->persist($newRate);
                              $em->flush();
                           }

        $em->persist($comments);
        $em->flush();
            return $this- >render('DoctixPatientBundle:Patient:voteconfirm.html.twig', array(
                'status' => 'OK',
                'title' => 'Note enregistrée !',
                'message' => 'Votre note/commentaire a bien été pris en     
                             compte. Merci d avoir noté !',
               'btn_text' => 'Retour',
               'btn_link' => $this->generateUrl('patient_comments'),));                  


        }
        else {
        // on lui renvoie le formulaire
        return $this->render('DoctixPatientBundle:Patient:create.html.twig', 
                  array(
                        'bookings'=> $bookings
                        ));
    }

Сейчас я не знаю, как выполнять вычисления, чтобы динамически отображать этот индикатор выполнения со значением ставки и номером ставки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...