laravel5雄辩的外键hasOne()

时间:2015-12-19 15:29:32

标签: laravel laravel-5 foreign-keys eloquent

我有一个包含交易数据的交易表,如:id|user_id|amount|payment_method_id|...

payment_methods 表包含不同的付款方式。表格设计为:id|name

表的内容如下:

1 |贝宝

2 |信用卡。

现在我想显示交易记录。这很好,但是laravel总是显示付款方式的编号,而不是名称。我的交易模型如下:

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

始终显示数字,但不显示付款方式的正确名称。哪里是我的错?

2 个答案:

答案 0 :(得分:1)

你应该这样定义关系:

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

现在您可以通过以下方式显示付款方式名称:

echo $transaction->paymentMethod->name;

在您的示例中,您使用的是与列相同的关系名称,而您使用hasOne关系代替belongsTo

答案 1 :(得分:0)

假设您有一个Transaction模型,其中包含payment_method_id()方法,用于定义transactionpayment method表之间的关系。现在,您可以从任何事务对象访问所有columns/property。应该是类似的事情:

$transection->payment_method_id->name;