如何在ZF2中设置MySQL数据库表的特定属性的条件?

问题描述:

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..!

这是代码,我想在 gettingMarks上设置条件 strong >。 该条件将检查 gettingMarks strong>是否已分配值。 p> blockquote>

  $ qb-> select(array(array)  
“academic.studentAcademicId as studentAcademicId”,
“academic.descriptions as description”,
“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',' 学生')
  - > leftJoin('academic.session','session')
  - > where('academic.student =:student')
  - > setParameter('student',$ studentId)  - > groupBy('studentAcademicId'); 
  code>  pre> 
 
 

那么如何设置这样一个条件来检查 gettingMarks strong>是否带有价值 是不是..! p> div>

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.