Order.php 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. <?php
  2. namespace yiiunit\extensions\redis\data\ar;
  3. /**
  4. * Order
  5. *
  6. * @property int $id
  7. * @property int $customer_id
  8. * @property int $created_at
  9. * @property string $total
  10. *
  11. * @property Customer $customer
  12. * @property Item[] $itemsIndexed
  13. * @property OrderItem[] $orderItems
  14. * @property Item[] $items
  15. * @property Item[] $itemsInOrder1
  16. * @property Item[] $itemsInOrder2
  17. * @property Item[] $booksWithNullFK
  18. * @property Item[] $itemsWithNullFK
  19. * @property OrderItemWithNullFK[] $orderItemsWithNullFK
  20. * @property Item[] $books
  21. */
  22. class Order extends ActiveRecord
  23. {
  24. /**
  25. * @inheritdoc
  26. */
  27. public function attributes()
  28. {
  29. return ['id', 'customer_id', 'created_at', 'total'];
  30. }
  31. /**
  32. * @return \yii\redis\ActiveQuery
  33. */
  34. public function getCustomer()
  35. {
  36. return $this->hasOne(Customer::className(), ['id' => 'customer_id']);
  37. }
  38. /**
  39. * @return \yii\redis\ActiveQuery
  40. */
  41. public function getOrderItems()
  42. {
  43. return $this->hasMany(OrderItem::className(), ['order_id' => 'id']);
  44. }
  45. /**
  46. * @return \yii\redis\ActiveQuery
  47. */
  48. public function getItems()
  49. {
  50. return $this->hasMany(Item::className(), ['id' => 'item_id'])
  51. ->via('orderItems', function ($q) {
  52. // additional query configuration
  53. });
  54. }
  55. /**
  56. * @return \yii\redis\ActiveQuery
  57. */
  58. public function getItemsIndexed()
  59. {
  60. return $this->hasMany(Item::className(), ['id' => 'item_id'])
  61. ->via('orderItems')->indexBy('id');
  62. }
  63. /**
  64. * @return \yii\redis\ActiveQuery
  65. */
  66. public function getItemsWithNullFK()
  67. {
  68. return $this->hasMany(Item::className(), ['id' => 'item_id'])
  69. ->via('orderItemsWithNullFK');
  70. }
  71. /**
  72. * @return \yii\redis\ActiveQuery
  73. */
  74. public function getOrderItemsWithNullFK()
  75. {
  76. return $this->hasMany(OrderItemWithNullFK::className(), ['order_id' => 'id']);
  77. }
  78. /**
  79. * @return \yii\redis\ActiveQuery
  80. */
  81. public function getItemsInOrder1()
  82. {
  83. return $this->hasMany(Item::className(), ['id' => 'item_id'])
  84. ->via('orderItems', function ($q) {
  85. $q->orderBy(['subtotal' => SORT_ASC]);
  86. })->orderBy('name');
  87. }
  88. /**
  89. * @return \yii\redis\ActiveQuery
  90. */
  91. public function getItemsInOrder2()
  92. {
  93. return $this->hasMany(Item::className(), ['id' => 'item_id'])
  94. ->via('orderItems', function ($q) {
  95. $q->orderBy(['subtotal' => SORT_DESC]);
  96. })->orderBy('name');
  97. }
  98. /**
  99. * @return \yii\redis\ActiveQuery
  100. */
  101. public function getBooks()
  102. {
  103. return $this->hasMany(Item::className(), ['id' => 'item_id'])
  104. ->via('orderItems')
  105. ->where(['category_id' => 1]);
  106. }
  107. /**
  108. * @return \yii\redis\ActiveQuery
  109. */
  110. public function getBooksWithNullFK()
  111. {
  112. return $this->hasMany(Item::className(), ['id' => 'item_id'])
  113. ->via('orderItemsWithNullFK')
  114. ->where(['category_id' => 1]);
  115. }
  116. /**
  117. * @inheritdoc
  118. */
  119. public function beforeSave($insert)
  120. {
  121. if (parent::beforeSave($insert)) {
  122. $this->created_at = time();
  123. return true;
  124. } else {
  125. return false;
  126. }
  127. }
  128. }