gpt4 book ai didi

php - 显示 MySQL 最后 5 条不同的搜索结果

转载 作者:行者123 更新时间:2023-11-29 10:49:58 25 4
gpt4 key购买 nike

我有一个工具,用户可以在其中输入一些搜索值,并且该值存储在另一个表中以用于记录目的。现在,我想显示该用户的最后 5 个搜索结果。

保存搜索后,我使用以下函数进行查询:

public function scopeGetUserSearch($query)
{
return $query->select('searchValue')
->where('userID', '=', Auth::user()->id)
->orderBy('created_at', 'desc')
->distinct()
->take(5);
}

我需要区分这些值,因为用户可以多次搜索相同的术语。 (例如,如果用户搜索术语“Playstation 4”4次,则需要显示一次)

然后我在blade中显示结果:

@foreach($bsUserSearch as $b)
<div id="brand_box" class="border left" style="min-width: 30px;cursor:pointer;text-align:center;" onclick="$('#company').val('{{$b->searchValue}}');">{{$b->searchValue}}</div>
@endforeach

问题是,当用户再次搜索“Playstation 4”时,即使 created_at 字段是最新的,它也不会首先显示。或者,如果已填充 5 个位置,则根本不会显示术语“Playstation 4”。

所以,如果我有这些搜索结果:

  1. Xbox 360
  2. 电脑
  3. 任天堂
  4. PlayStation 4
  5. Wii

如果用户再次搜索“PlayStation 4”,我需要将其放在列表顶部。像这样:

  1. PlayStation 4
  2. Xbox 360
  3. 电脑
  4. 任天堂
  5. Wii

最佳答案

基于this answer ,我得到了这个解决方案

public function scopeGetUserSearch($query)
{
return $query->select('searchValue', \DB::raw('max(created_at)'))
->where('userID', '=', Auth::user()->id)
->groupBy('searchValue')
->orderBy(\DB::raw('max(created_at), searchValue'), 'desc')
->take(5);
}

关于php - 显示 MySQL 最后 5 条不同的搜索结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43917027/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com