Tôi có hai địa chỉ giao hàng khác nhau cho mỗi đơn hàng:
- địa chỉ hóa đơn
- Địa chỉ giao hàng
Tất cả họ đều có trường giống nhau nên tôi chỉ tạo một trường cho họ Địa chỉ
Người mẫu.
Người mẫu:
Mỗi đơn hàng có hai trường:
- địa chỉ hóa đơn
- Địa chỉ giao hàng
Tôi muốn mỗi trường trỏ đến cùng một địa chỉ (nếu người dùng muốn hàng hóa được vận chuyển đến địa chỉ lập hóa đơn) hoặc hai địa chỉ khác nhau (nếu địa chỉ giao hàng khác với địa chỉ lập hóa đơn).
Tôi sẽ xây dựng mối quan hệ như thế nào cho mục đích này?
Đây là những gì tôi đã thử:
đơn đặt hàng.php
chức năng công cộng orderAddress() {
return $this->hasOne('App\Address');
}
chức năng công cộng DeliveryAddress() {
return $this->hasOne('App\Address');
}
địa chỉ.php
trật tự chức năng công cộng() {
return $this->belongsTo('App\Order');
}
Nhưng tôi dường như không thể tìm ra cách gán hai địa chỉ khác nhau cho một đơn hàng.
Tôi đã cân nhắc việc sử dụng hasMany()
mối quan hệ, nhưng nếu không Địa chỉ
Việc chỉ định loại trong mô hình khiến cho việc xác định địa chỉ nào là địa chỉ khó trở nên khó khăn.
1.hiện hữuĐặt hàng
Trong mô hình:
chức năng công cộng orderAddress()
{
return $this->hasOne('App\Address', 'invoice_address');
}
địa chỉ phân phối chức năng công cộng()
{
return $this->hasOne('App\Address', 'delivery_address');
}
hiện hữuĐịa chỉ
Trong mô hình:
chức năng công cộng orderForInvoiceAddress()
{
return $this->belongsTo('App\Order', 'invoice_address');
}
chức năng công cộng orderForDeliveryddress()
{
return $this->belongsTo('App\Order', 'delivery_address');
}
2. Nhưng tôi nghĩ cách tốt hơn để xử lý vấn đề này là sử dụng khóa ngoại tiêu chuẩn order_id
và thêm kiểu
Danh sách:
chức năng công cộng orderAddress()
{
return $this->hasOne('App\Address')->where('type', 1);
}
địa chỉ phân phối chức năng công cộng()
{
return $this->hasOne('App\Address')->where('type', 2);
}
hiện hữu Địa chỉ
Trong mô hình:
trật tự chức năng công cộng()
{
return $this->belongsTo('App\Order');
}
Tôi là một lập trình viên xuất sắc, rất giỏi!