Advertisement
Guest User

Untitled

a guest
Jun 20th, 2019
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.25 KB | None | 0 0
  1. A table:
  2. a_id = 1, name = yes, number = 123
  3. a_id = 2, name = no, number = 456
  4. a_id = 3, name = ok, number = 683
  5.  
  6. B table:
  7. id = 1, a_id = 1, firstname = s
  8. id = 2, a_id = 1, firstname = y
  9. id = 3, a_id = 2, firstname = e
  10. id = 4, a_id = 2, firstname = x
  11. id = 5, a_id = 2, firstname = t
  12. id = 6, a_id = 3, firstname = r
  13.  
  14. a_id = 1, name = yes, number = 123
  15. a_id = 1, name = s, number = null
  16. a_id = 1, name = y, number = null
  17. a_id = 2, name = no, number = 456
  18. a_id = 2, name = e, number = null
  19. a_id = 2, name = x, number = null
  20. a_id = 2, name = t, number = null
  21. a_id = 3, name = ok, number = 683
  22. a_id = 3, name = r, number = null
  23.  
  24. SELECT `a_id`, `name`, `number` FROM `user` WHERE number != ''
  25. UNION ALL
  26. SELECT `a_id`, `firstname` as name , null as `number` FROM `customer`
  27. WHERE `firstname` != ''
  28. ORDER BY `a_id` ASC, name ASC
  29.  
  30. $query1 = (new yiidbQuery())
  31. ->select("a_id, name, number")
  32. ->from('user')
  33. ->where(['!=', 'number', '']);
  34.  
  35. $query2 = (new yiidbQuery())
  36. ->select("a_id, firstname as name , null as number")
  37. ->from('customer')
  38. ->where(['!=', 'firstname', '']);
  39.  
  40. $unionQuery = (new yiidbQuery())
  41. ->from(['dummy_name' => $query1->union($query2)])
  42. ->orderBy(['a_id' => SORT_ASC, 'name' => SORT_ASC]);
  43.  
  44. $provider = new ActiveDataProvider([
  45. 'query' => $unionQuery,
  46. 'pagination' => [
  47. 'pageSize' => 20,
  48. ],
  49. ]);
  50.  
  51. $rows = $provider->getModels();
  52.  
  53. $query1 = (new yiidbQuery())
  54. ->select("a_id, name, number")
  55. ->from('user')
  56. ->where(['!=', 'number', '']);
  57.  
  58. $query2 = (new yiidbQuery())
  59. ->select("a_id, firstname as name , null as number")
  60. ->from('customer')
  61. ->where(['!=', 'firstname', '']);
  62.  
  63. $query1->union($query2, false);//false is UNION, true is UNION ALL
  64. $sql = $query1->createCommand()->getRawSql();
  65. $sql .= ' ORDER BY id DESC';
  66. $query = User::findBySql($sql);
  67.  
  68. $dataProvider = new ActiveDataProvider([
  69. 'query' => $query,
  70. ]);
  71.  
  72. $queryHistory = CoinsHistory::find();
  73. $queryHistoryRecent = CoinsHistoryRecent::find();
  74. $query = (new ActiveQuery(CoinsHistory::className()))->from([
  75. 'union_history' => $queryHistory->union($queryHistoryRecent)
  76. ]);
  77.  
  78. $dataProvider = new ActiveDataProvider([
  79. 'query' => $query,
  80. 'sort' => ['defaultOrder' => ['id' => SORT_DESC]]
  81. ]);
  82.  
  83. $filter = [];
  84. $queryHistory->andFilterWhere($filter);
  85. $queryHistoryRecent->andFilterWhere($filter);
  86.  
  87. // Query Table A
  88. $tableA = (new yiidbQuery())
  89. ->select("a_id, name, number")
  90. ->from('user')
  91. ->where(['!=', 'number', '']);
  92.  
  93. // Query table B
  94. $tableB = (new yiidbQuery())
  95. ->select("a_id, firstname as name , null as number")
  96. ->from('customer')
  97. ->where(['!=', 'firstname', '']);
  98.  
  99. // Union table A and B
  100. $tableA->union($tableB);
  101.  
  102. /*
  103. * Table A is your Model
  104. * find() method in activeRecord will load the instance of ActiveQuery
  105. * Now you can use base Query methods like select and from on find() method
  106. */
  107. $query = TableA::find()->select('*')->from(['random_name' => $tableA]);
  108.  
  109. // Dataprovider
  110. $dataProvider = new ActiveDataProvider([
  111. 'query' => $query,
  112. 'pagination' => [
  113. 'pageSize' => 20,
  114. ],
  115. 'sort'=> ['defaultOrder' => ['a_id' => SORT_ASC]],
  116. ]);
  117.  
  118. //Search filters and grid filters can go here
  119.  
  120. return $dataProvider;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement