【问题标题】:Laravel: Model function to check if relationship existsLaravel:检查关系是否存在的模型函数
【发布时间】:2018-04-11 16:43:34
【问题描述】:

我有两个模型CustomerContact在Customer模型中有如下关系:

public function latestContact () {
    return $this->hasOne(Contact::class)->latest();
}

我已经发现here 可以在显示数据时检查关系是否存在。否则我会收到 “尝试获取非对象的属性” 错误。

optional($customer->latestContact)->address

现在我想知道是否有办法在模型函数中直接检查这个。我宁愿只打电话

$customer->latestContact->address

或类似的东西

$customer->getLatestContactAdress

如果关系不存在,则返回 false(或无结果)。

提前谢谢你。

【问题讨论】:

  • 如果你的关系是 hasOne 为什么你要调用 latest()
  • @afsalc 实际的关系是 hasMany()。使用 latestContact 函数,我只调用客户的最新联系人。

标签: laravel eloquent


【解决方案1】:

您可以define an accessor 或父模型中的函数。

您的客户模型中的类似内容:

public function getLatestContactAddress()
{
    return optional($this->latestContact)->address;
}

然后这样称呼它:

$customer->getLatestContactAddress();

【讨论】:

  • 谢谢。我想这就是我一直在寻找的。我今晚试试。
【解决方案2】:

尝试使用预加载

$customer = Customer::with('latestContact')->get();

如果不行请告诉我

【讨论】:

    猜你喜欢
    • 2014-07-17
    • 2020-06-21
    • 1970-01-01
    • 2014-08-24
    • 1970-01-01
    • 2014-05-28
    • 1970-01-01
    • 1970-01-01
    • 2018-11-19
    相关资源
    最近更新 更多