【问题标题】:Laravel eloquent "belongsTo" / "hasOne"Laravel 雄辩的“belongsTo”/“hasOne”
【发布时间】:2015-01-17 10:17:50
【问题描述】:

我已经给出了一个包含两个表的现有数据库:

customers (address_id)
addresses

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

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

例如客户.php

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

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

// 编辑:这是一个现有表,其中包含我目前无法更新的数据。

我的解决方法是:

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

【问题讨论】:

  • 你现在遇到什么问题?

标签: php laravel model eloquent


【解决方案1】:

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

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

只要设置了Address 模型上的$primaryKey 属性(或者它是传统的id),您就可以省略第三个参数

【讨论】:

  • 太棒了,这个小提示做到了!
【解决方案2】:

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

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

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

【讨论】:

  • 是的,我是这么想的。但该地址没有客户 ID。
猜你喜欢
  • 1970-01-01
  • 2018-01-11
  • 1970-01-01
  • 1970-01-01
  • 2020-07-03
  • 2022-01-27
  • 1970-01-01
  • 1970-01-01
  • 2014-11-08
相关资源
最近更新 更多