Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Scout with Meilisearch, is sending all model data instead of just the specific data defined in the toSearchableArray() method. #823

Closed
devravik opened this issue Apr 23, 2024 · 2 comments

Comments

@devravik
Copy link

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"

@driesvints
Copy link
Member

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?

@devravik
Copy link
Author

devravik commented Apr 24, 2024

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', ];

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants