在Laravel模型中从Limit()切换到First()

在Laravel模型中从Limit()切换到First(),laravel,laravel-5,eloquent,Laravel,Laravel 5,Eloquent,我被困在一个问题上,我试图清理呈现给我的代码,我觉得我在这个问题上做得太久了,看不到这个问题 目前,我的一个模型中有以下代码: 公共功能附件{ return$this->hasmanyvolunterationattachment::class,“志愿者id”和“id”; } 公共函数类照片{ $photoID=$this->attachments->where'category','Drivers License'->orderBy'endDate','desc'->limit1; 返回$ph

我被困在一个问题上,我试图清理呈现给我的代码,我觉得我在这个问题上做得太久了,看不到这个问题

目前,我的一个模型中有以下代码:

公共功能附件{ return$this->hasmanyvolunterationattachment::class,“志愿者id”和“id”; } 公共函数类照片{ $photoID=$this->attachments->where'category','Drivers License'->orderBy'endDate','desc'->limit1; 返回$photoID; } 我想做的是,我认为用一个简单的first替换函数photoIdentification的limit1是相对简单的

但是,当我尝试这样做并将{{$志愿者->photoID->id}}放在我的刀片中时,它只会返回错误App\志愿者::photoID必须返回一个关系实例

然而,我确实知道这是一种关系,因为如果我继续使用limit1,并将:

@foreach$志愿者->照片id作为$id {{$id->id} @endforeach 它正确返回关系和文档

$志愿者是特定模型App\志愿者的变量,以下是它在控制器中的定义方式:

公众活动义工$义工{ 返回视图'志愿者.表演',压缩'志愿者'; } 函数photoID仍将返回完整的附件对象。如果要使用第一个函数获取id,必须选择对象上的id属性,如下所示:

{{ $volunteer->photoID()->id }}
您还可以在直接返回此属性的模型上执行以下操作:

public function getPhotoidAttribute($value)
{
    return $this->attachments()->where('category','Drivers License')->orderBy('endDate','desc')->first()->id;
}
现在,在blade中,您只需使用:

{{ $volunteer->photoid }}

当您将模型的函数作为变量调用时,Laravel假定您试图返回一个相关的模型。试着换一种方式:

这样称呼它:

{{ $volunteer->photoid }}

什么是$志工。$志工只是特定型号应用程序\志工的变量。这没有帮助,编辑您的问题并添加与您的问题相关的所有内容。好吧,除了我刚才包含的控制器之外,所有内容都在那里。正如我所说的,第一种方法是作为集合返回,而第二种方法不是第一种方法,它应该返回一个实例。试着用一个字母代替
{{ $volunteer->photoid }}