я использую Laravel 5.5
и используя TNTSearch engine
за Laravel Scout
,
Проблема, с которой я столкнулся, связана с eloquent relationships
и могу ли я сделать условные проверки для них.
Laravel Scout
включает в себя where function
как eloquent, но это действительно глупая версия, которая позволяет только проверять столбцы и ничего больше.
Это мой ток Search Controller
:
protected function search() {
$query = request()->input('query');
$meta = $this->searchMeta($query, 10);
$items = $this->searchItems($query, 10);
return view('model.search.index')->with([
'meta' => $meta,
'items' => $items
]);
}
protected function searchMeta($query, $limit = 100) {
return ItemMeta::search($query, function($tntsearch, $query, $options) use ($limit) {
return $tntsearch->search($query, $limit);
})->where('company_id', \Auth::user()->company_id)->get();
}
protected function searchItems($query, $limit = 100) {
return Item::search($query, function($tntsearch, $query, $options) use ($limit) {
return $tntsearch->search($query, $limit);
})->get(); // Need to be restricted to company
}
Цель того, что я хочу сделать, — проверить, относится ли данный элемент к компании текущего пользователя. Я делаю это, имея company_id column
на Meta table
, элемент затем имеет столбец с именем "meta_id"
который является внешним ключом к Meta.
Как бы я показывал результаты только для текущей компании, когда элемент использует отношение, чтобы проверить, есть ли у пользователя доступ или нет? Если это невозможно с Scout
или TNTSearch engine
, тогда, если у вас есть какие-либо альтернативы, которые позволяют мне сделать это, пожалуйста, дайте мне знать.
Задача ещё не решена.
Других решений пока нет …