Я сделал небольшую систему обозначений на 5 с кнопками радио, и я записал эти голоса в рейтинг своей таблицы со значением в качестве значения примечания и nbrrate в качестве количества голосов, теперь на странице сведений о враче,Я хочу увидеть различные заметки, которые он получил, а также общее среднее количество голосов, как это показано на картинке
Вот изображение моей таблицы рейтинга:
Веточка
<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
));
}
Сейчас я не знаю, как выполнять вычисления, чтобы динамически отображать этот индикатор выполнения со значением ставки и номером ставки.