我有一个Laravel后端,它基本上用作我的数据库及其数据的API和仪表板。每天使用Python脚本直接更新数据到数据库。有没有办法在PHP项目之外触发Laravel Scout更新(以便在Algolia中更新行)?
我认为唯一的选择是使用Laravel api来处理python脚本和数据库之间的更改,以便只有Laravel可以直接与数据库通信。
但是,我真的更喜欢是否有一种方法可以在不使用Laravel的情况下添加一个侦听器或其他任何内容,因为python脚本非常快。
答案 0 :(得分:5)
如果你想重新索引所有内容,这似乎是最适合你的方法,我只需通过Python 执行 php path/to/artisan scout:import "App\Model"
。
如果你想更新每个模型,因为你只会编辑一个非常有限的数字,比如Giorgi说的,我会使用Algolia Python客户端并直接调用Algolia的API。写起来应该很容易。 https://github.com/algolia/algoliasearch-client-python
答案 1 :(得分:1)
有两种方法:
1)。 您可以使用Laravel API将Algolia条目更新到数据库中。
2)。也许你可以使用Algolia Python Library。
我建议你使用Laravel API。您只需从Python脚本中调用API URL即可。你需要编写清晰的Laravel控制器API的PHP代码,因为python很快,需要与api快速通信。
另外:您可以简单地使用名为flask的Python模块连接到您的laravel数据库,并在数据库中进行所需的更改。 (每个数据库都可以使用不同的编程语言进行管理,例如PHP,Ruby on Rails,Python等。)
只有laravel无法与您的数据库通信,它也可以通过Python完成(当然,它主要也可以来自laravel)。