Pe-*_*Ter 5 php database laravel eloquent
对于每个订单,我有两个不同的送货地址:
这两个具有相同的字段,所以我只Address为它们创建了一个模型。
楷模:
每个订单包含两个字段:
我希望这些字段中的每一个都指向相同的地址(以防用户希望将货物运送到发票地址)或两个不同的地址(以防交货地址与发票地址不同)。
我将如何为此目的建立关系?
这是我尝试过的:
订单.php
public function orderAddress() {
return $this->hasOne('App\Address');
}
public function deliveryAddress() {
return $this->hasOne('App\Address');
}
Run Code Online (Sandbox Code Playgroud)
地址.php
public function order() {
return $this->belongsTo('App\Order');
}
Run Code Online (Sandbox Code Playgroud)
但我似乎无法弄清楚如何为一个订单分配两个不同的地址。
我考虑过使用这种hasMany()关系,但是如果不指定Address模型中的类型,就很难分辨哪个地址是哪个。
1、模型中Order:
public function orderAddress()
{
return $this->hasOne('App\Address', 'invoice_address');
}
public function deliveryAddress()
{
return $this->hasOne('App\Address', 'delivery_address');
}
Run Code Online (Sandbox Code Playgroud)
在模型中Address:
public function orderForInvoiceAddress()
{
return $this->belongsTo('App\Order', 'invoice_address');
}
public function orderForDeliveryddress()
{
return $this->belongsTo('App\Order', 'delivery_address');
}
Run Code Online (Sandbox Code Playgroud)
2.但我认为处理此问题的更好方法是使用一个标准外键order_id并添加type列:
public function orderAddress()
{
return $this->hasOne('App\Address')->where('type', 1);
}
public function deliveryAddress()
{
return $this->hasOne('App\Address')->where('type', 2);
}
Run Code Online (Sandbox Code Playgroud)
并在Address模型中:
public function order()
{
return $this->belongsTo('App\Order');
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
382 次 |
| 最近记录: |