如果订单上没有送货地址,我想返回客户地址。
这就是我一直在尝试的:
public function deliveryAddress()
{
if ( $this->delivery_address )
{
return $this->belongsTo("DeliveryAddress",'delivery_address');
}
return $this->belongsTo("Customer", 'customer_id');
}
如果我想使用Order::with('deliveryAddress')->get(),这是不起作用的,只有当我有一个模型而不是集合时。
这可能吗?
当您使用关系时,仍然没有可用的行,关系是在构建过程中的查询,这样,您仍然没有t have
delivery_address`可用:
if ( $this->delivery_address )
因为在这一点上,你的模型仍然没有建立起来。它(或它们)将在get()
或first()
之后出现,然后您就可以访问它们。所以你可以
public function deliveryAddress()
{
return $this->belongsTo("DeliveryAddress",'delivery_address');
}
public function customerAddress()
{
return $this->belongsTo("Customer", 'customer_id');
}
class Order extends Eloquent {
public function getAddress()
{
if ($this->delivery_address)
{
return $this->deliveryAddress;
}
else
{
return $this->customerAddress;
}
}
}
$order = Order::with('deliveryAddress', 'customerAddress')->first();
echo $order->getAddress()->street_name;
这是未经测试的代码,所以一开始可能不起作用,但这就是你可以做什么的想法。