0

SQL Query: I am trying to get affiliation, feerange, insttype(checkbox data) through DQL query.

Here is SQL query:

$affiliation = implode(",", array('1','2','3','4'));
$feerange    = implode(",", array('1','2','3','4','5','6'));
$insttype    = implode(",", array('1','2','3'));  
$dql = "SELECT i FROM Edufaction\Bundle\EdufactionBundle\Entity\Institute i"
    . " JOIN i.instsummary s"
    . " WHERE s.instaffiliation IN ($affiliation)"
    . " AND s.insttype IN ($insttype)"
    . " AND i.institutefeerange IN ($feerange)"
    . " ORDER BY i.instituterating ASC"; 

I have two entities: Institute Entity:

/**
 * @ORM\Entity
 * @ORM\Table(name="institute")
 */
class Institute {
public static $instfeerange = array(1 => "₹",
                            2 => "₹₹", 
                            3 => "₹₹₹", 
                            4 => "₹₹₹₹", 
                            5 => "₹₹₹₹₹", 
                            6 => "₹₹₹₹₹₹",
                            0 => " "  );
/**
 * @ORM\Id
 * @ORM\Column(type = "integer", name= "id")
 * @ORM\GeneratedValue(strategy="AUTO")
 */
protected $id;
/**
 * @ORM\OneToOne(targetEntity="InstSummary", mappedBy="institute")
 */
protected $instsummary;

/**
 * @ORM\Column(type="string",name="institutename", length=200,nullable=true)
 */
protected $institutename;

/**
 * @ORM\Column(type="string",name="institutefeerange", length=100,nullable=true)
 */
protected $institutefeerange;
/**
 * @ORM\Column(type="decimal", precision=19, scale=2, name="instituterating",nullable=true)
 */
protected $instituterating;

public function getId() {
    return $this->id;
}

public function getInstitutename() {
    return $this->institutename;
}

public function getInstitutefeerange() {
    return $this->institutefeerange;
}
function getInststringfeerange() {
     $aff = $this->institutefeerange;
     $test = self::$instfeerange[$aff];
     return $test;
}
public function getInstituterating() {
    return $this->instituterating;
}

public function setId($id) {
    $this->id = $id;
}

public function setInstitutename($institutename) {
    $this->institutename = $institutename;
}

public function setInstitutefeerange($institutefeerange) {
    $this->institutefeerange = $institutefeerange;
}

public function setInstituterating($instituterating) {
    $this->instituterating = $instituterating;
}

/**
 * Set instsummary
 *
 * @param \Edufaction\Bundle\EdufactionBundle\Entity\InstSummary $instsummary
 *
 * @return Institute
 */
public function setInstsummary(\Edufaction\Bundle\EdufactionBundle\Entity\InstSummary $instsummary = null) {
    $this->instsummary = $instsummary;

    return $this;
}

/**
 * Get instsummary
 *
 * @return \Edufaction\Bundle\EdufactionBundle\Entity\InstSummary
 */
public function getInstsummary() {
    return $this->instsummary;
} }

InstSummary Entity: Here I applied OneToOne relation between Institute and InstSummary table through reference institute_id

/**
 * @ORM\Entity
 * @ORM\Table(name="instsummary")
 */
class InstSummary {

public static $instituteaff = array(1 => "ICSE",
                            2 => "CBSE", 
                            3 => "State Board", 
                            4 => "ISC", 
                            5 => "IGCSE", 
                            6 => "IB", 
                            7 => "Play School",
                            8 => "Not Applicable",
                            ''=>""
                            );
public static $instype = array(1 => "Boys",
                            2 => "Girls", 
                            3 => "Co-educational"
                            );
/**
 * @ORM\Id
 * @ORM\Column(type = "integer", name= "id")
 * @ORM\GeneratedValue(strategy="AUTO")
 */
protected $id;

// ...

/**
 * @ORM\OneToOne(targetEntity="Institute", inversedBy="instsummary")
 * @ORM\JoinColumn(name="institute_id", referencedColumnName="id")
 */
protected $institute;

/**
 * @ORM\Column(type="bigint", name="instaffiliation", length=50,nullable=true)
 */
protected $instaffiliation;
/**
 * @ORM\Column(type="integer", name="insttype", length=10,nullable=true)
 */
protected $insttype;

public function getId() {
    return $this->id;
}

public function getInstaffiliation() {
    return $this->instaffiliation;
}

function getInststringaffiliation() {
    $aff = $this->instaffiliation;
    $test = self::$instituteaff[$aff];
    return $test;
}

public function getInstituteid() {
    return $this->instituteid;
}

public function getInsttype() {
    return $this->insttype;
}
function getInststringtype() {
     $type = $this->insttype;
     $test = self::$instype[$type];
     return $test;
}

public function setId($id) {
    $this->id = $id;
}
public function setInstaffiliation($instaffiliation) {
    $this->instaffiliation = $instaffiliation;
}
public function setInstituteid($instituteid) {
    $this->instituteid = $instituteid;
}

public function setInsttype($insttype) {
    $this->insttype = $insttype;
}

/**
 * Set institute
 *
 * @param \Edufaction\Bundle\EdufactionBundle\Entity\Institute $institute
 *
 * @return InstSummary
 */
public function setInstitute(\Edufaction\Bundle\EdufactionBundle\Entity\Institute $institute = null) {
    $this->institute = $institute;

    return $this;
}

/**
 * Get institute
 *
 * @return \Edufaction\Bundle\EdufactionBundle\Entity\Institute
 */
public function getInstitute() {
    return $this->institute;
}
}

DQL query:

$data = $request->request->get('request'); 
$repository = $em->getRepository('EdufactionBundle:Institute');

$query1 = $repository->createQueryBuilder('i')
        ->innerJoin('i.instsummary', 's')              
        ->select('s.id as instaffiliation, i.id as insttype')  
        ->where('s.id=:instaffiliation')  
        ->setParameter('instaffiliation', $data)   
        ->getQuery()->getResult();

How to convert SQL query to Symfony2 DQL query? I tried this DQL query but I am not getting I think this is wrong...

Pls any one help - Thanks for advance...

1 Answer 1

2

You should use IN to check for all the comma separated value, Please check below query, May be it will help you.

$data = $request->request->get('request'); 
$repository = $em->getRepository('EdufactionBundle:Institute');
$queryBuilder = $repository->createQueryBuilder('i');
$query1 = $queryBuilder
                ->innerJoin('i.instsummary', 's')            
                ->select('s.id as instaffiliation, i.id as insttype')  
                ->where('s.id IN (:instaffiliation)')  
                ->setParameter('instaffiliation', $data(should be array))   
                ->getQuery()->getResult();
Sign up to request clarification or add additional context in comments.

8 Comments

It is not working @Maulik Savaliya i try to run using var_dump($query1);exit;
i am getting array(0) { }
you mentioned query here with out institutefeerange(institute table) once see my sql query
$dql = "SELECT i FROM Edufaction\Bundle\EdufactionBundle\Entity\Institute i JOIN i.instsummary s where s.instaffiliation" . " IN ($affiliation) AND s.insttype IN ($insttype) AND i.institutefeerange IN ($feerange) ORDER BY i.instituterating ASC";
Once i check my query and i let you know its working or not. Any way Thanks for Reply...@Maulik Savaliya
|

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.