Laravel 的 Notion 集成
这个软件包提供了一种简单明了的方式来访问 Notion API 端点、查询数据和更新现有条目。文档
有关详细文档、更多背景信息和使用示例,请访问官方文档网站 notionforlaravel.com。
快速入门指南
所有示例都参考我们的测试数据库,您可以在这里找到。
安装
该软件包兼容 Laravel 8、9 和 10。最低 PHP 要求是 8.0。
-
通过 composer 安装软件包:
composer require fiveam-code/laravel-notion-api
-
按照 Notion 文档 中的说明获取您的 Notion API 访问令牌。同样重要的是,要在您的 Notion 页面中为集成授予访问权限,这在 Notion 的开发者文档中也有描述。
-
在应用程序的
.env
文件中添加一行:NOTION_API_TOKEN="$YOUR_ACCESS_TOKEN"
-
准备就绪!现在您可以通过
Notion
facade 访问 Notion 端点:use \Notion; Notion::databases()->find("8284f3ff77e24d4a939d19459e4d6bdc");
就是这样。
有关详细使用信息和可用端点列表,请参阅(文档)。
示例
获取 Notion 数据库
databases()->find()
方法返回一个 FiveamCode\LaravelNotionApi\Entities\Database
对象,其中包含数据库的所有信息,包括其属性和每个属性的可能值。
use \Notion;
Notion::databases()
->find("8284f3ff77e24d4a939d19459e4d6bdc");
获取 Notion 页面
pages()->find()
方法返回一个 FiveamCode\LaravelNotionApi\Entities\Page
对象,其中包含页面的所有信息,包括其属性和每个属性的可能值。
Notion::pages()
->find("e7e5e47d-23ca-463b-9750-eb07ca7115e4");
搜索
search()
端点返回与搜索查询匹配的页面集合。搜索范围限于安装了集成的工作区以及与集成共享的页面。
Notion::search("搜索词")
->query()
->asCollection();
查询数据库
database()
端点允许您查询特定数据库,并返回页面(=数据库条目)的集合。您可以过滤和排序结果,并限制返回的条目数量。有关可用过滤器和排序的详细信息,请参阅文档。
use FiveamCode\LaravelNotionApi\Query\Filters\Filter;
use FiveamCode\LaravelNotionApi\Query\Filters\Operators;
$nameFilter = Filter::textFilter('Name', Operators::EQUALS, 'Ada Lovelace');
\Notion::database("8284f3ff77e24d4a939d19459e4d6bdc")
->filterBy($nameFilter)
->limit(5)
->query()
->asCollection();
还可以使用复合过滤器进行 AND 或 OR 查询:
use Illuminate\Support\Collection;
use FiveamCode\LaravelNotionApi\Query\Filters\Filter;
use FiveamCode\LaravelNotionApi\Query\Filters\FilterBag;
use FiveamCode\LaravelNotionApi\Query\Filters\Operators;
use FiveamCode\LaravelNotionApi\Query\Sorting;
# 查找所有满足以下条件的条目:
# (KnownFor == UNIVAC || KnownFor == ENIAC)
# 并按名称升序排序
$filterBag = new FilterBag(Operators::AND);
$filterBag->addFilter(
Filter::rawFilter("Known for", [
"multi_select" => [Operators::CONTAINS => "UNIVAC"],
])
);
$filterBag->addFilter(
Filter::rawFilter("Known for", [
"multi_select" => [Operators::CONTAINS => "ENIAC"],
])
);
\Notion::database("8284f3ff77e24d4a939d19459e4d6bdc")
->filterBy($filterBag)
->sortBy(Sorting::propertySort('Name', 'ascending'))
->limit(5)
->query()
->asCollection();
测试
您可以通过查看 /tests
目录中的软件包测试找到更多使用示例。我们使用 Pest 进行测试,目前正在将所有现有的 PHPUnit 测试转换为 Pest。
如果您想在命令行中运行测试:
vendor/bin/pest tests
支持
由 Tinkerwell 支持
这个软件包的开发得到了 Tinkerwell 的支持。
贡献
请查看 CONTRIBUTING 了解详情。
安全
如果您发现任何与安全相关的问题,请发送电子邮件至 hello@dianaweb.dev,而不是使用问题跟踪器。
致谢
许可证
MIT 许可证 (MIT)。更多信息请查看 许可证文件。