我正在尝试在模型上设置属性,例如:
public function getLatestLeadAttribute()
{
return $this->leads()->latest()->first();
}
但是尝试时出现错误:
public function getLatestLeadAttribute()
{
$lead = $this->leads()->latest()->first();
return $lead->created_at; // Returning 'Cannot get property of non- object';
}
但是,如果我执行以下操作:
public function getLatestLeadAttribute()
{
$lead = $this->leads()->latest()->first();
dd($lead); // Returns App/Lead instance
return $lead->created_at;
}
即使我dd($lead->created_at)
收到了我要寻找的碳物体,它也会按预期返回线索实例。
为什么没有让我返回最新创建的Model的created_at的特定原因?
答案 0 :(得分:2)
您的代码总是有可能为没有相关线索的模型造成问题。您可以通过仅查询created_at值而不是尝试依赖整个潜在顾客模型来简化代码并解决该问题:
public function getLatestLeadAttribute()
{
return $this->leads()->latest()->value('created_at');
}
这只会在相关潜在客户中选择最新的created_at;如果不存在相关潜在客户,则返回null。这不仅可以解决访问错误,而且比从数据库中检索所有字段更有效。