如果订单上没有送货地址,我想退回客户地址。
这就是我一直在尝试的:
public function deliveryAddress()
{
if ( $this->delivery_address )
{
return $this->belongsTo("DeliveryAddress",'delivery_address');
}
return $this->belongsTo("Customer", 'customer_id');
}
如果我想使用Order :: with('deliveryAddress') - > get(),这不起作用,如果我有模型而不是集合。
这可能吗?
答案 0 :(得分:0)
当您使用关系时,您仍然没有可用的行,关系是构建过程中的查询,这样,您仍然可以在此处使用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;
这是未经测试的代码,因此最初可能无法正常工作,但这就是您可以做的事情。