在最近的关系记录中搜索 - 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 5.7 中定义关系

Laravel:数据表搜索选项不使用关系表字段

laravel 的 scout elasticsearch ik laravel-scout-elastic 之间的关系与安装

在 laravel 中搜索表及其关系

在laravel 8中搜索关系

Laravel 关系搜索