2015-12-19 49 views
0

我有含交易像的数据的事务表:id|user_id|amount|payment_method_id|...laravel5雄辩的外键hasOne()

payment_methods表中包含了不同的付款方式。表的设计是:表id|name

内容是这样的:

1 |贝宝

2 |信用卡。

现在我想显示交易记录。这工作正常,但laravel总是显示付款方式的数量,而不是名称。我的交易模式如下所示:

public function payment_method_id() 
{ 
    return $this->hasOne('App\Payment_Method', 'id', 'tpayment_method_id'); 
} 

它一直显示数字,但没有显示付款方式的正确名称。我的错在哪里?

回答

1

你应该定义的关系是这样的:

public function paymentMethod() 
{ 
    return $this->belongsTo('App\Payment_Method', 'payment_method_id'); 
} 

现在你可以显示付款方式的名称是这样的:

echo $transaction->paymentMethod->name; 

在你的榜样,你作为列和你的关系同名使用hasOne关系而不是belongsTo

+0

这是一个很好的答案。用id命名方法不是一个好主意。您正在返回整个PaymentMethod对象,因此适当地指定关系会很有用。 – codegeek

0

假设你有一个Transaction model containsi ng payment_method_id()定义transactionpayment method表之间关系的方法。现在,您可以从任何交易对象访问所有columns/property。它应该是类似如下:

$transection->payment_method_id->name;