2017-03-27 6 views
0

이렇게 나는 이것 같이 데이타베이스 체제가있다.Doctrine Entity Object에서 필터링하는 방법은 무엇입니까?

enter image description here

전화 번호는 그룹에 속한다. 또한 사용자는 그룹화에 속합니다. 가능한 경우 그룹화에 속한 모든 사용자를 쿼리 대신 엔터티 개체를 통해 가져 오는 방법을 파악하려고합니다. 해당 그룹에 속한 경우에만 정확한 결과를 대신 표시되도록 내가 아마 다른 필터를 추가 할 수있는 약간의 수정으로

나는이 같은 쿼리를 할 수있는 알고 있어요 예를 들어

...

<?php 

/** 
* Auto generated by MySQL Workbench Schema Exporter. 
* Version 3.0.3 (doctrine2-annotation) on 2017-03-27 04:09:37. 
* Goto https://github.com/johmue/mysql-workbench-schema-exporter for more 
* information. 
*/ 

namespace Entity; 

use Doctrine\ORM\Mapping as ORM; 
use Entity\BaseGrouping; 

/** 
* Entity\Grouping 
* 
* @ORM\Entity() 
*/ 
class Grouping extends BaseGrouping 
{ 
    public function getUsersByPriority(){ 
     global $entityManager; 

     $users = $entityManager->getRepository('Entity\User')->findBy(array(),array('priority' => 'ASC')); 

     return $users; 
    } 
} 

모든 것의. 지금은 그룹에 속해야하는 사용자 대신 모든 사용자가 표시됩니다.

내가 찾고 난 그냥 $ phonenumber-> getGroupings()를 말할 수있어 정확하게 모든 교리 클래스를 매핑하기 때문에 종류의이 같은 ...

$results = $entityManager->getRepository('entity\Phonenumber')->findBy(array('number' => '+'.$numberCalled)); 

      if(count($results)<=0 || count($results)>1){ 
       sendEmail('Error Occured', 'There was duplicate phone numbers in the database, used fallbacknumber<br/><br/>'.print_r($_REQUEST,true),"[email protected]"); 
       return $fallbacknumber; 
      }else{ 
       $phonenumber = $results[0]; 
       $group = $phonenumber->getGrouping(); //@JA - Returns the group object and stores it to variable group in scope 
      } 

      //Get list of all users in the group 
      $users = $group->getUsersByPriority(); //@JA - Returns all users associated with the group 

      //Find the first active and not busy user 
      foreach($users as $user){ 
       echo '<test>'.$user->getUserName().'<test>'; 
      } 

이다; 그리고 그것은 완벽한 전화 번호에 속한 그룹들만 나를 돌려줍니다!

그러나 지금 필요한 것은 특정 그룹에 속한 모든 사용자입니까?

우리가 할 수 있으면 충분하다. $group->getUsers(); 여기에서의 문제는 사용자를 우선 순위별로 정렬해야하며 기본 방법을 사용할 때 정렬이 필요 없다는 점입니다.

의 모든 사용자에게 우선 순위별로 정렬하는 동안 그룹 만받는 방법은 무엇입니까?

답변

0

나는 대답을 찾았지만 이것이 최선의 대답인지 아닌지는 모르겠다. getUsersByPriority 함수를 수정했습니다.

public function getUsersByPriority(){ 
     global $entityManager; 

     $grouping_id = $this->getId(); 

     $users = $entityManager->getRepository('Entity\User')->findBy(array('grouping_id' => $grouping_id),array('priority' => 'ASC')); 

     //@JA - Get reference to the users of just this grouping. 
     $users = $this->users; 

     return $users; 
    } 

$ this-> getId(); 이 경우 현재 인스턴스에 대한 참조를 가져옵니다.