Advertisement
Guest User

Untitled

a guest
Apr 1st, 2015
226
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.26 KB | None | 0 0
  1. /**
  2. *
  3. * @param type $systemType
  4. * @param type $roleList
  5. * @return ActiveDataProvider
  6. */
  7. public function searchTag($systemType = 'sector', $roleList = [], $recursive = true)
  8. {
  9.  
  10. $seedList = $this->getSeedList($recursive);
  11. $class = $this->getClass();
  12. $query = $class::find();
  13. $query->select([
  14. $this->mode . '_tag.id as id',
  15. "concat($systemType.code,' - ', tag.name) as tagName",
  16. "tag.id as tag",
  17. $this->mode . '_tag_role.id as role',
  18. $this->mode . '_tag_role.name as roleName'
  19. ]);
  20. $query->joinWith('relatedTag', true, 'INNER JOIN');
  21. $query->joinWith('relatedTag.' . $systemType, true, 'INNER JOIN');
  22. $query->joinWith('tagRole', true, 'INNER JOIN');
  23. //mode: subject or object
  24. if (empty($roleList)) {
  25. $roleList = array_keys($this->getRoleList());
  26. }
  27. $query->andWhere([
  28. 'in', $this->mode . '_tag_role.id', $roleList,
  29. ]);
  30. $query->andWhere([
  31. 'in', $this->mode, $seedList,
  32. ]);
  33. return new ActiveDataProvider([
  34. 'query' => $query,
  35.  
  36. ]);
  37. }
  38.  
  39. private function getQuery($systemType = 'sector', $roleList = [], $recursive = true)
  40. {
  41. $seedList = $this->getSeedList($recursive);
  42. $class = $this->getClass();
  43. $query = $class::find();
  44. $query->select([
  45. $this->mode . '_tag.id as id',
  46. "concat($systemType.code,' - ', tag.name) as tagName",
  47. "tag.id as tag",
  48. $this->mode . '_tag_role.id as role',
  49. $this->mode . '_tag_role.name as roleName'
  50. ]);
  51. $query->joinWith('relatedTag', true, 'INNER JOIN');
  52. $query->joinWith('relatedTag.' . $systemType, true, 'INNER JOIN');
  53. $query->joinWith('tagRole', true, 'INNER JOIN');
  54. //mode: subject or object
  55. if (empty($roleList)) {
  56. $roleList = array_keys($this->getRoleList());
  57. }
  58. $query->andWhere([
  59. 'in', $this->mode . '_tag_role.id', $roleList,
  60. ]);
  61. $query->andWhere([
  62. 'in', $this->mode, $seedList,
  63. ]);
  64.  
  65. return $query;
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement