У меня есть приложение Laravel 5.7 , использующее Scout Extended для интеграции Algolia функции поиска.В приложении у меня есть модель с именем "Prospect" , которая имеет отношение к отношениям с двумя другими моделями: "State" & "FoodCat" .
Я пытаюсь выяснить, как включить данные отношения для "State" & "FoodCat" в результаты поиска при поиске по индексу Алголии.
Данные отношения были включены в поисковый индекс путем расширения доSearchableArray () в модели Prospect.
[https://www.algolia.com/doc/framework-integration/laravel/indexing/configure-searchable-data/#relationships]
Однако данные взаимосвязи не доступны в коллекции Eloquent после поиска.Он доступен только при циклическом просмотре массива необработанных данных ...
Просмотр массива необработанных данных как "State" , так и "FoodCat" данные отношения доступны в поисковом индексе при выводе необработанных данных:
... out пример: Prospect :: search ('') -> raw ()
array:9 [▼
"hits" => array:20 [▼
0 => array:33 [▼
"id" => 251
"name" => "Pizza House & Grille"
"contact_fname" => null
"contact_lname" => null
"contact_title" => null
"food_cat_id" => 1
"phone" => 6195610325
"fax" => null
"website" => ""
"address" => "12580 Lakeshore Drive"
"address2" => null
"city" => "Lakeside"
"state_id" => 5
"zip" => 92040
"region_id" => 1
"latitude" => 38.975201
"longitude" => -122.676003
"sic_desc" => "Pizza Restaurants"
"lead_source" => "Manual"
"owner_type" => null
"contacted" => 0
"contacted_timestamp" => null
"response_notes" => "Lorem Ipsum Something Something"
"user_id" => null
"created_at" => 1319545964
"updated_at" => 1550950060
"foodcat" => array:3 [▼
"id" => 1
"title" => "Pizza/Italian"
"slug" => "Pizza-Italian"
]
"state" => array:4 [▼
"id" => 5
"name" => "California"
"abbr" => "CA"
"active" => 1
]
"_geoloc" => array:2 [▶]
"food_cat_title" => "Pizza/Italian"
"_tags" => array:1 [▶]
"objectID" => "App\Prospect::251"
"_highlightResult" => array:9 [▶]
]
Однако при поиске по индексу и извлечении результатов в красноречивую коллекцию данные "State" и "FoodCat" недоступны ...
... пример выводаиз: Prospect :: search ('') -> get ()
Collection {#650 ▼
#items: array:20 [▼
0 => Prospect {#713 ▼
#guarded: []
#connection: "mysql"
#table: "prospects"
#primaryKey: "id"
#keyType: "int"
+incrementing: true
#with: []
#withCount: []
#perPage: 15
+exists: true
+wasRecentlyCreated: false
#attributes: array:26 [▶]
#original: array:26 [▼
"id" => 333
"name" => "test"
"contact_fname" => "test"
"contact_lname" => "test"
"contact_title" => "test"
"food_cat_id" => 1
"phone" => "6195551212"
"fax" => ""
"website" => ""
"address" => "123 mian"
"address2" => ""
"city" => "sd"
"state_id" => 5
"zip" => 92101
"region_id" => 1
"latitude" => "32.785301"
"longitude" => "-117.111000"
"sic_desc" => "Pizza"
"lead_source" => "Manual"
"owner_type" => ""
"contacted" => 0
"contacted_timestamp" => null
"response_notes" => ""
"user_id" => null
"created_at" => "2019-03-19 11:08:57"
"updated_at" => "2019-03-19 11:08:57"
]
#changes: []
#casts: []
#dates: []
#dateFormat: null
#appends: []
#dispatchesEvents: []
#observables: []
#relations: []
#touches: []
+timestamps: true
#hidden: []
#visible: []
#fillable: []
#scoutMetadata: array:1 [▶]
}
Как я могу сделать те же самые данные отношений доступными для красноречивой коллекции после поиска в Алголииindex?
Ссылка на эту ссылку [https://gist.github.com/Artistan/fea3e21f149fdf845e530299bcff37d4]
... вы можете получить доступ к данным отношения через paginator, стремясь загрузить отношения послепоиск вызова ...
$prospects = Prospect::search('pizza')->paginate(999999);
$prospects->load('state');
$prospects->load('foodcat');
Однако мне было интересно, если бы был способ сделать те же данные доступными без использования пакласс гинатора ...