nfragkos/eloquenty

Statamic 插件,允许您通过 Eloquent 将特定集合条目存储到数据库中。

v3.0.1 2024-08-28 17:36 UTC

README

MIT Licensed

此包允许您通过 Laravel 的 Eloquent ORM 将特定集合的条目存储到数据库中。

出于性能原因,结构被禁用。

要求

  • PHP 8+
  • Statamic v4

工作原理

Eloquenty 使用 Statamic Eloquent Driver (https://github.com/statamic/eloquent-driver),但进行了修改,允许使用该驱动器为特定集合条目而不是每个条目。

Screenshot 2021-01-27 162333 标准集合和 Eloquenty 集合都将显示在 /cp/collections 下,但条目列将显示“由 Eloquenty 管理”的消息。

Screenshot 2021-01-27 162410 Eloquenty 集合在单独的路由 /cp/eloquenty/collections 下进行管理,这是 /cp/collections 路由组的克隆,但进行了修改,以使用 Eloquenty\Entries 下的 Entry 和 EntryRepository 类,这些类使用 Eloquent ORM。与 Entry 相关的类和控制器扩展了原始的 Statamic 类。

有一个中间件,当在 /cp/collections/{collection} 上点击以查看 /cp/collections 下的 Eloquenty 集合时,它会从 /cp/collections/{collection} 重定向到 /cp/eloquenty/collections/{collection}

应在原始 /cp/collections 路由下执行集合修改。

安装

您可以通过以下方式使用 composer 安装此包:

composer require nfragkos/eloquenty

该包将自动注册自己。

安装后

  1. 发布 eloquenty 配置和迁移文件

    php artisan vendor:publish --provider="Eloquenty\ServiceProvider"

  2. 运行 php artisan migrate 以创建 Eloquenty 表。
    (确保 Laravel 配置正确且已创建模式。见 https://laravel.net.cn/docs/8.x/database#configuration

  3. 在 config/eloquenty.php 中创建新集合或输入现有集合句柄

    'collections' => [
        'blog',
    ],

    这意味着博客集合的条目将由 Eloquenty 处理。

  4. 如果您将现有集合输入到 Eloquenty 配置中,有一个导入命令可以导入条目到数据库

    php artisan eloquenty:import-entries blog

    请在验证条目已成功导入后,从文件系统中删除您的集合条目。

使用方法

Eloquenty 现应在控制面板导航菜单的内容部分下可见。Eloquenty 集合的 CRUD 与标准集合相同。

Antlers

在 Antlers 模板中使用 eloquenty 标签而不是集合标签来处理 Eloquenty 集合

{{ eloquenty from="blog" limit="10" taxonomy:tags="demo|example" sort="date:desc" }}
    <a href="{{ url }}">{{ title }}</a>
{{ /eloquenty }}

数据检索和处理

调用集合存储库的 queryEntries() 方法将返回 Eloquenty 集合的正确 QueryBuilder

\Statamic\Facades\Collection::find('blog')->queryEntries()

或者,您可以使用 Facade Eloquenty::repository() 方法或 EloquentyEntry::query() 来检索 EntryRepository 实例(实现 Statamic\Contracts\Entries\EntryRepository

Eloquenty\Facades\Eloquenty::repository()
Eloquenty\Facades\EloquentyEntry::query()

请注意,调用 whereCollection() 方法将获取表中的所有条目。您应使用返回查询构建器实例的 query() 方法来构建您的查询。

变更日志

请参阅变更日志以获取更多关于最近更改的信息。

贡献

欢迎提交拉取请求,并将获得全部认可。

  1. main分支上分叉仓库并创建你的分支。
  2. 如有需要,请更新README文件。
  3. 确保你的代码遵循PSR-2编码标准。
  4. 提交拉取请求!

许可

MIT许可(MIT)。有关更多信息,请参阅许可文件

致谢

非常感谢Statamic为Eloquent驱动程序和出色的CMS所做的贡献 ❤️

咖啡

如果你喜欢这个插件,请考虑买我一杯咖啡

paypal