diff --git a/backend/app/Model/Order.php b/backend/app/Model/Order.php index de1dc0e..00a888c 100644 --- a/backend/app/Model/Order.php +++ b/backend/app/Model/Order.php @@ -4,7 +4,7 @@ declare(strict_types=1); namespace App\Model; -use Hyperf\DbConnection\Model\Model; +use App\Model\OrderItem; /** * @property int $id 主键 @@ -58,13 +58,19 @@ class Order extends Model */ protected array $casts = ['id' => 'integer', 'company_id' => 'integer', 'platform_id' => 'integer', 'store_id' => 'integer', 'order_status_id' => 'integer', 'payment_method_id' => 'integer', 'presale' => 'boolean', 'order_type_id' => 'integer', 'created_at' => 'datetime', 'updated_at' => 'datetime']; - /** - * Get the order items for the order. + * 获取订单子项(基于 hypertable 分区键查询) + * + * @return \Hyperf\Database\Model\Collection */ - public function items() + public function getOrderItems() { - return $this->hasMany(OrderItem::class, 'order_id', 'id'); + return OrderItem::query() + ->where('platform_id', $this->platform_id) + ->where('store_id', $this->store_id) + ->where('platform_order_id', $this->platform_order_id) + ->where('created_date', $this->created_date) + ->get(); } } diff --git a/backend/app/Model/OrderItem.php b/backend/app/Model/OrderItem.php index 891bab9..76d90a8 100644 --- a/backend/app/Model/OrderItem.php +++ b/backend/app/Model/OrderItem.php @@ -4,8 +4,6 @@ declare(strict_types=1); namespace App\Model; -use Hyperf\DbConnection\Model\Model; - /** * @property int $id 主键 * @property int $company_id 公司 ID 与 Tools 保持一致 @@ -23,9 +21,10 @@ use Hyperf\DbConnection\Model\Model; * @property int $quantity 商品子项总数量 * @property string $discount 订单子项总的折扣金额 * @property string $total 总金额 = 单价X数量 - 折扣 + * @property string $created_date 订单创建时间(与父订单 created_date 一致,hypertable 分区键) * @property string $ext 扩展字段 - * @property \Carbon\Carbon $created_at - * @property \Carbon\Carbon $updated_at + * @property \Carbon\Carbon $created_at + * @property \Carbon\Carbon $updated_at * @mixin \App_Model_OrderItem */ class OrderItem extends Model @@ -38,7 +37,7 @@ class OrderItem extends Model /** * The attributes that are mass assignable. */ - protected array $fillable = ['id', 'company_id', 'platform_id', 'store_id', 'order_id', 'platform_order_id', 'sub_order_id', 'sub_order_type_id', 'product_id', 'platform_product_id', 'product_sku', 'product_barcode', 'unit_price', 'quantity', 'discount', 'total', 'ext', 'created_at', 'updated_at']; + protected array $fillable = ['id', 'company_id', 'platform_id', 'store_id', 'order_id', 'platform_order_id', 'sub_order_id', 'sub_order_type_id', 'product_id', 'platform_product_id', 'product_sku', 'product_barcode', 'unit_price', 'quantity', 'discount', 'total', 'created_date', 'ext', 'created_at', 'updated_at']; /** * The attributes that should be cast to native types. @@ -46,10 +45,17 @@ class OrderItem extends Model protected array $casts = ['id' => 'integer', 'company_id' => 'integer', 'platform_id' => 'integer', 'store_id' => 'integer', 'order_id' => 'integer', 'sub_order_type_id' => 'integer', 'product_id' => 'integer', 'quantity' => 'integer', 'created_at' => 'datetime', 'updated_at' => 'datetime']; /** - * Get the order that owns the order item. + * 获取父订单(基于 hypertable 分区键查询) + * + * @return Order|null */ - public function order() + public function getParentOrder(): ?Order { - return $this->belongsTo(Order::class, 'order_id', 'id'); + return Order::query() + ->where('platform_id', $this->platform_id) + ->where('store_id', $this->store_id) + ->where('platform_order_id', $this->platform_order_id) + ->where('created_date', $this->created_date) + ->first(); } }