2017-03-27 10 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();を使用することができませんでした。この場合、現在のインスタンスへの参照を取得します。

関連する問題