Seeker
Seeker

Reputation: 303

How to set condition on specific attribute of the MySQL database table in ZF2?

This is the code, and i want to set condition on obtainedMarks. The condition will check if the obtainedMarks have a value assigned or not.

 $qb->select(array(
       "academic.studentAcademicId as studentAcademicId",
       "academic.descriptions as descriptions",
       "student.name as studentName",
       "student.studentId as studentId",
       "class.name as className",
       "session.name as sessionName",
       ***"SUM(marks.marksObtained) as marksObtained",***
    ))
        ->from('Application\Entity\StudentAcademics','academic')
        ->leftJoin('academic.class','class')
        ->leftJoin('academic.marks','marks')
        ->leftJoin('academic.student','student')
        ->leftJoin('academic.session','session')
        ->where('academic.student = :student')
        ->setParameter('student',$studentId)->groupBy('studentAcademicId');

So how to put such a condition that checks out if obtainedMarks carry a value or not..!

Upvotes: 0

Views: 103

Answers (1)

Seeker
Seeker

Reputation: 303

In Zendframework2, all query data is assigned to an array variable e.g $data

 $data = $qb->getQuery()->getScalarResult();

and is returned to whoever call this controller i.e,

return new ViewModel(array(
                'data' => $data,
            )

To check if a specific attribute in a query bears a value or not is to check it through foreach loop in the view that called this controller e.g

<?php foreach ($this->data as $item): ?>
<tr>
    <td>
        <?php if(isset( $item['marksObtained']) &&  $item['marksObtained'] > 0){?>
            <a href="<?=$this->url( 'marks/details', array('action'=>'index', 'id'=>$item['studentAcademicId']))?>">
                <?php echo $item['marksObtained']; ?></a>
        <?php }else{ ?>
            <a href="<?=$this->url( 'marks/details', array('action'=>'add', 'id'=>$item['studentAcademicId']))?>">
                Add Marks</a>
        <?php }?>
    </td>
</tr>

As seen, the if condition is checking out the obtainedMarks value from the data array variable.

Upvotes: 1

Related Questions