Lok*_*oko 5 php mysql laravel laravel-scout
我似乎无法弄清楚如何在 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);
}
}
Run Code Online (Sandbox Code Playgroud)
这是控制器:
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();
}
}
Run Code Online (Sandbox Code Playgroud)
现在这将返回在其中一列中具有“某物”的用户,如下所示:
[
{
"id": "1",
"original_user_id": "1",
"username": "something"
"original_user": {
"id": "1",
"username":"test"
}
}
]
Run Code Online (Sandbox Code Playgroud)
但我需要我的代码也返回这条记录:
[
{
"id": "2",
"original_user_id": "2",
"username": "nope"
"original_user": {
"id": "2",
"username": "something"
}
}
]
Run Code Online (Sandbox Code Playgroud)
因此,当它与结果的关系匹配时,我也希望返回该记录。我也尝试制作OriginalUser模型searchable,但我只是停留在这一点上。
该文档是不够清晰,我找出如何真正得到我们的关系列将匹配搜索值以及结果。我发现的唯一关于官方文档中模型中关系的内容是:
// You may also add records via relationships...
$user->orders()->searchable();
Run Code Online (Sandbox Code Playgroud)
我试过,但它并没有告诉我其他记录。(当然,我改变了orders对originalUser()我的代码)
有谁知道如何使用 laravel scout 在 1 个“搜索”中搜索多个模型?
编辑: 我没有使用 Algolia,而是使用 mysql。
不幸的是,目前使用 Scout 和 MySQL 驱动程序似乎无法实现这一点。
今天我自己寻找完全相同问题的解决方案,我发现了一些建议,通过 toSearchableArray 方法在您想要搜索的模型上添加关系可能会做到这一点:https ://laracasts.com/discuss/channels/laravel/scout -如何搜索关系和计数?page=1#reply=329201
但这对我不起作用,因为 toSearchableArray 负责将潜在的搜索结果放入像 Algolia 这样的索引中,而 MySql 驱动程序不会这样做。几个小时后,我在该主题的存储库上发现了 2016 年的一个问题,这表明他们还没有时间实现这个:https ://github.com/yabhq/laravel-scout-mysql-driver/issues /5
| 归档时间: |
|
| 查看次数: |
3428 次 |
| 最近记录: |