Laravel:用于检查关系是否存在的模型函数

时间:2018-04-11 06:43:49

标签: laravel eloquent

我有两个模型客户联系,客户模式中存在以下关系:

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

我已经发现here可选的帮助程序可以在显示数据时检查关系是否存在。否则我会收到"试图获取非对象" 错误的属性。

optional($customer->latestContact)->address

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

$customer->latestContact->address

或类似

$customer->getLatestContactAdress

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

提前谢谢。

2 个答案:

答案 0 :(得分:1)

你可以define an accessor或你父模型中的一个功能。

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

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

并称之为:

$customer->getLatestContactAddress();

答案 1 :(得分:0)

尝试使用预先加载

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

如果不行,请告诉我