所以我有这样的数据库设置。
电话号码属于分组。用户也属于分组。我试图找出如何获得属于分组的所有用户,但是如果可能的话,通过实体对象而不仅仅是查询。
例如,我知道我可以像这样进行查询...
<?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;
}
}
稍加修改后我可以添加另一个过滤器,以便只显示与该组相关的正确结果而不是所有内容。现在,这将导致只显示每个用户,而不是那些只属于该组的用户。
我正在寻找的东西是这样的......
$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),"joe@poolserviceusa.com");
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>';
}
由于我正确地映射了所有学说类,我只能说$ phonenumber-&gt; getGroupings();它只返回属于那个完美的语音的分组!
但我现在需要的是属于该特定群组的所有用户?
如果我们这样做很容易$group->getUsers();
这里的问题是我需要按优先级排序的用户,并且在使用这些默认方法时没有排序。
在按优先级排序时,如何让的所有用户
答案 0 :(得分: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-&gt; getId();在这种情况下获得对当前实例的引用。