doctrine2 - Adding in an innerJoin a where clause on the many to many joinning table -


i have existing query join:

  public function findclientsandtheirusers($user_id, $search) {     $query = $this->getentitymanager()->createquerybuilder()       ->select('c.client_id, c.title, u.user_id, u.email')       ->from('application\entity\user', 'u')       ->innerjoin('u.clients', 'c')       ->innerjoin('c.users', 'cu')       ->andwhere("cu.user_id = {$user_id}")       ->groupby('c.client_id')       ->orderby('c.title, u.email', 'asc');     return $query->getquery()->getresult(\doctrine\orm\query::hydrate_array);   } 

resting on these tables:

client

| client_id   | int(10) unsigned | no   | pri | null    | auto_increment | | title       | tinytext         | no   |     | null    |                | 

user

| user_id        | int(10) unsigned     | no   | pri | null    | auto_increment | | email          | varchar(255)         | no   | uni | null    |                | 

user_has_client

| user_id   | int(10) unsigned | no   | pri | null    |       | | client_id | int(10) unsigned | no   | pri | null    |       | 

with these entities:

client

/**  * @orm\manytomany(targetentity="user", inversedby="clients")  * @orm\jointable(name="user_has_client",  *     joincolumns={@orm\joincolumn(name="client_id", referencedcolumnname="client_id")},  *     inversejoincolumns={@orm\joincolumn(name="user_id", referencedcolumnname="user_id")}  * )  */ protected $users; 

user

/**  * @orm\manytomany(targetentity="client", mappedby="users")  */ protected $clients; 

userhasclient

/**  * @orm\id  * @orm\column(type="integer", options={"unsigned"=true})  */ protected $user_id;  /**  * @orm\id  * @orm\column(type="integer", options={"unsigned"=true})  */ protected $client_id;  /**  * @orm\manytoone(targetentity="user", inversedby="userhasclients")  * @orm\joincolumn(name="user_id", referencedcolumnname="user_id", nullable=false)  */ protected $user;  /**  * @orm\manytoone(targetentity="client", inversedby="userhasclients")  * @orm\joincolumn(name="client_id", referencedcolumnname="client_id", nullable=false)  */ protected $client; 

now, added roles column user_has_client table:

| user_id   | int(10) unsigned | no   | pri | null    |       | | client_id | int(10) unsigned | no   | pri | null    |       | | roles     | tinytext         | yes  |     | null    |       | 

and update query returns users with, say, admin roles.

try this, hope helpfull-

public function findclientsandtheirusers($user_id, $search) {     $query = $this->getentitymanager()->createquerybuilder()             ->select('c.client_id, c.title, u.user_id, u.email')             ->from('application\entity\user', 'u')             ->innerjoin('u.userhasclients', 'uhc')             ->innerjoin('uhc.client', 'c')             ->where("u.user_id = {$user_id}")             ->andwhere("uhc.roles = :role")->setparameter('role', $role)             ->groupby('c.client_id')             ->orderby('c.title, u.email', 'asc');     return $query->getquery()->getresult(\doctrine\orm\query::hydrate_array); } 

let me know if still problem.


Comments

Popular posts from this blog

ubuntu - PHP script to find files of certain extensions in a directory, returns populated array when run in browser, but empty array when run from terminal -

php - How can i create a user dashboard -

javascript - How to detect toggling of the fullscreen-toolbar in jQuery Mobile? -