在最近的关系记录中搜索 - Laravel (Eloquent)
Posted
技术标签:
【中文标题】在最近的关系记录中搜索 - Laravel (Eloquent)【英文标题】:Search in last record of relationship - Laravel (Eloquent) 【发布时间】:2021-04-10 07:26:49 【问题描述】:我需要在 Laravel 7 中搜索关系的最后一条记录。这是我的代码,希望你能理解我的问题 :)
$Collection = ServiceRequest::whereHas('ServiceRequestSignatureFlows', function ($query) use ($ou_id)
return $query->latest()->where('user_id',666);
)
->orderBy('name', 'ASC')
->get();
ServiceRequest 有许多 SignatureFlows,但我只需要搜索最后插入的流。我认为当我制作 ->latest() 时,我的搜索只能在最后一行搜索 666,但不会发生。 谢谢
【问题讨论】:
【参考方案1】:删除whereHas
内的return
【讨论】:
【参考方案2】:您可以创建新的关系HasOne
并通过它进行过滤。
public function ServiceRequestSignatureLastFlow()
return $this->hasOne(ServiceRequestSignatureFlows::class)->orderByDesc('id');
比
$collection = ServiceRequest::whereHas('ServiceRequestSignatureLastFlow', function ($query) use ($ou_id)
$query->where('user_id', $ou_id);
)->orderBy('name', 'ASC')->get();
【讨论】:
以上是关于在最近的关系记录中搜索 - Laravel (Eloquent)的主要内容,如果未能解决你的问题,请参考以下文章
laravel 的 scout elasticsearch ik laravel-scout-elastic 之间的关系与安装