gpt4 book ai didi

php - Laravel Eloquent Relationships - 两个不同的送货地址与一个订单模型相关联

转载 作者:可可西里 更新时间:2023-10-31 23:14:28 24 4
gpt4 key购买 nike

每个订单我有两个不同的送货地址:

  • 发票地址
  • 送货地址

它们都有相同的字段,所以我只为它们创建了一个 Address 模型。

模型:

  • 地址
  • 订单

每个订单包含两个字段:

  • 发票地址
  • 送货地址

我希望每个字段都指向同一个地址(如果用户希望将 cargo 运送到发票地址)或两个不同的地址(如果送货地址与发票地址不同)。

我将如何为此目的建立关系?

这是我尝试过的:

订单.php

public function orderAddress() {
return $this->hasOne('App\Address');
}

public function deliveryAddress() {
return $this->hasOne('App\Address');
}

地址.php

public function order() {
return $this->belongsTo('App\Order');
}

但我似乎无法弄清楚如何为一个订单分配两个不同的地址。

我考虑过使用 hasMany() 关系,但是如果不在 Address 模型中指定类型,就很难分辨哪个地址是哪个。

最佳答案

1.Order模型中:

public function orderAddress()
{
return $this->hasOne('App\Address', 'invoice_address');
}

public function deliveryAddress()
{
return $this->hasOne('App\Address', 'delivery_address');
}

地址模型中:

public function orderForInvoiceAddress()
{
return $this->belongsTo('App\Order', 'invoice_address');
}

public function orderForDeliveryddress()
{
return $this->belongsTo('App\Order', 'delivery_address');
}

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);
}

Address 模型中:

public function order()
{
return $this->belongsTo('App\Order');
}

关于php - Laravel Eloquent Relationships - 两个不同的送货地址与一个订单模型相关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48523668/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com