Scout with Meilisearch, is sending all model data instead of just the specific data defined in the toSearchableArray() method.
Closed this issue · 2 comments
Scout Version
10.8.6
Scout Driver
Meilisearch
Laravel Version
10.0
PHP Version
8.2
Database Driver & Version
MySQL 8
SDK Version
No response
Meilisearch CLI Version
No response
Description
Scout, combined with Meilisearch, is sending all model data instead of just the specific data I've defined in the toSearchableArray() method.
Steps To Reproduce
artisan scout:import "App\ContactModel"
Hey @devravik. I can't believe that's correct.. It's literally implemented in the update method:
https://github.com/laravel/scout/blob/10.x/src/Engines/MeilisearchEngine.php#L63
Are you sure that this is happening? How did you reach this conclusion?
Hey @driesvints,
Here following are further details
Ran php artisan scout:import "App\DeviceModel"
dd for toSearchableArray() returns following
array:18 [ "id" => 1 "name" => "1 5033T Black OC " "brand_name" => "Alcatel" "type" => null "img_url" => "/img/default.png" "service_fee" => null "boost_value" => 0 "listed" => 1 "brand" => array:5 [ "id" => 40 "name" => "Alcatel" "img_url" => "brands/T4wT4E2WBzfe8ZY4djf5S4s4DwWP4iVmTOfQ1znd.jpeg" "service_fee" => null "listed" => true ] "services_count" => 6 "can_trade_in" => 1 "can_upgrade" => 0 "can_repair" => 1 "moorup_sku" => "" "price_functional_not_broken_screen" => 10000 "price_functional_broken_screen" => 8000 "price_non_functional_not_broken_screen" => 5000 "price_non_functional_broken_screen" => 3000 ] // app/DeviceModel.php:52
Object I got from Meilisearch which isn't matches with above we are sending
{
"id": 1,
"brand_id": 40,
"img_url": "/img/default.png",
"service_fee": null,
"type": null,
"is_listed": 1,
"name": "1 5033T Black OC ",
"can_trade_in": 1,
"can_repair": 1,
"can_upgrade": 0,
"boost_value": 0,
"moorup_sku": "",
"sales_model_code": null,
"price_functional_not_broken_screen": 10000,
"price_non_functional_not_broken_screen": 5000,
"price_functional_broken_screen": 8000,
"price_non_functional_broken_screen": 3000,
"created_at": "2020-05-20T14:12:39.000000Z",
"updated_at": "2023-07-07T15:48:04.000000Z",
"device_name": "Alcatel 1 5033T Black OC ",
"brand_name": "Alcatel",
"listed": true,
"services_count": 6,
"brand": {
"id": 40,
"name": "Alcatel",
"img_url": "brands/T4wT4E2WBzfe8ZY4djf5S4s4DwWP4iVmTOfQ1znd.jpeg",
"service_fee": null,
"created_at": "2019-08-17T18:04:26.000000Z",
"updated_at": "2020-08-27T04:17:50.000000Z",
"listed": true
}
},
Which matches with $fillable and also included brand relation as loaded for object and appended attributes.
protected $fillable = [ 'name', 'brand_id', 'type', 'img_url', 'service_fee', 'is_listed', 'price_non_functional_broken_screen', 'price_functional_broken_screen', 'price_non_functional_not_broken_screen', 'price_functional_not_broken_screen', 'moorup_sku', 'can_upgrade', 'can_trade_in', 'sales_model_code', 'can_repair', ];