Laravel eloquent "belongsTo" / "hasOne"

Laravel eloquent "belongsTo" / "hasOne"

我给了一个 existing 数据库,其中有两个 tables:

customers (address_id)
addresses

此外,customers 中的每个客户都有一个 AddressID。通常,我会假设每个地址都有一个客户的 id,但这里客户有地址 id。

现在我正在寻找一个模型函数来从客户那里检索地址,以便在 blade 模板中使用类似 {{ $customer->address }} 的内容:

例如Customer.php

public function address() {
    return $this->belongsTo('Address', 'CustomerID', 'AddressID');
}

问:如何获取客户的相关地址?

// 编辑:这是一个现有的 table 数据,我目前无法更新。

我的解决方法是:

$customer->address = Address::find($customer->AddressID);

在客户模型中创建这样的函数

public function address() {
    return $this->hasOne('Address', 'CustomerID', 'AddressID');
}

其中 Address 是地址模型的名称 CustomerIDcustomers 中的主键(我建议只使用 id)并且 AddressID 是对Address 个客户 table。所以,现在您可以使用 {{ $customer->address }} 来检索客户的地址。

您的 belongsTo 调用中的参数有点错误。试试这个:

$this->belongsTo('Address', 'AddressID');
                                 ^
                            foreign key

你可以省略第三个参数,只要 Address 模型上的 $primaryKey 属性 被设置(或者它是常规的 id