gpt4 book ai didi

php - 关系中的 Laravel 侦察搜索

转载 作者:行者123 更新时间:2023-12-03 17:01:51 27 4
gpt4 key购买 nike

我似乎无法弄清楚如何在 Laravel scout 中的 1 个查询中的 2 个表中进行搜索。出于目前不重要的特定原因,我不想只运行原始查询。现在我有这个要搜索:

我的关系:

namespace App;
use Laravel\Scout\Searchable;
class Users extends Model
{
use Searchable;
public function searchableAs(){
return 'users_index';
}
public function toSearchableArray(){
return $this->toArray();
}
public function originalUser(){
return $this->belongsTo(OriginalUser::class);
}
}

这是 Controller :
use App\OriginalUser;
use App\Users;
use App\Groups;

class SomeController extends Controller{

public function index(){
$group = Group::where('group_id',1)->first();
return Users::search('something')->where('group_id',$group->id)->get();
}
}

现在这将返回在其中一列中具有“某物”的用户,就像这样:
   [
{
"id": "1",
"original_user_id": "1",
"username": "something"
"original_user": {
"id": "1",
"username":"test"
}
}
]

但我需要我的代码也返回这条记录:
   [
{
"id": "2",
"original_user_id": "2",
"username": "nope"
"original_user": {
"id": "2",
"username": "something"
}
}
]

因此,当它与结果的关系匹配时,我也希望返回该记录。我试图制作 OriginalUser型号 searchable同样,但我只是卡在这一点上。

documentation对我来说还不够清楚,无法找出如何实际获得关系列也与搜索值匹配的结果。我发现的唯一关于官方文档中模型中关系的内容是:
// You may also add records via relationships...
$user->orders()->searchable();

我试过这个,但它没有显示其他记录。(当然我在我的代码中将 orders 更改为 originalUser())

有谁知道如何使用 laravel scout 在 1 个“搜索”中搜索多个模型?

编辑:
我没有使用 Algolia,而是使用 mysql。

最佳答案

不幸的是,目前使用 Scout 和 MySQL 驱动程序似乎无法做到这一点。
今天在我周围寻找完全相同问题的解决方案,我发现了一些建议,通过 toSearchAbleArray 方法在您要搜索的模型上添加关系可能会这样做:https://laracasts.com/discuss/channels/laravel/scout-how-to-search-in-relations-and-counts?page=1#reply=329201
但这对我不起作用,因为 toSearchableArray 处理将潜在搜索结果放置在像 Algolia 这样的索引中,而 MySql 驱动程序不这样做。几个小时后,我在该主题的 repo 上发现了 2016 年的一个问题,这表明他们还没有开始实现这个:https://github.com/yabhq/laravel-scout-mysql-driver/issues/5

关于php - 关系中的 Laravel 侦察搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59358066/

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