grosv / eloquent-sheets
由 Google Sheets 支持的 Eloquent 模型
Requires
- php: ^7.3
- ext-json: *
- calebporzio/sushi: ^2.0
- illuminate/support: >=6.0
- revolution/laravel-google-sheets: ^5.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.16
- orchestra/testbench: ^5.0
README
一个允许您在 Google Sheet 上放置 Eloquent 的包。
此包提供了一个位于 Google Sheet 上方的 Eloquent 模型。您可以使用包含列名的标题行。默认为第 1 行(顶部行),但可以是工作表中的任何一行。或者,您可以在模型中定义一个标题数组。如果您选择不在电子表格中包含主键列,则每个列都将获得一个自动递增的 id(或您在模型中称为主键列的任何名称)。
当您使用此包时,模型的初始调用将读取工作表并将每一行存储为基于文件 sqlite 数据库中的表中的记录。模型的后续调用使用该 sqlite 数据库,因此电子表格的变化不会反映在数据库中。但是,有两种方法可以使 sqlite 缓存无效并使其重新创建:
-
您可以在模型上调用 invalidateCache() 方法,例如
YourGoogleSheetModel::first()->invalidateCache()
-
一个可以附加到您的 Google 工作表的宏。该宏监听电子表格中的编辑,当发生编辑时,它会向此包提供的路由发送请求,删除 sqlite 数据库,迫使下次使用模型时重新加载。
安装
composer require grosv/eloquent-sheets
配置
此包依赖于 revolution/laravel-google-sheets。您必须处理该包及其依赖项的配置,以便此包工作。按照其说明(尽管您可以跳过 composer require 部分,因为我在这里已经做了)。
用法
考虑以下 Google Sheet。我们想在上面放置一个 Eloquent 模型。
php artisan make:sheet-model
步骤 1 - 输入您想要创建模型文件的目录的完整路径(默认为 app_path())
步骤 2 - 输入您想要使用的模型类名
步骤 3 - 将您的 Google 工作表的编辑网址粘贴到浏览器地址栏中
步骤 4 - 确认路径和完整类名正确无误
步骤 5 - 您将收到一个宏的模板,您可以将它附加到您的表格上,告诉您的网站表格已更改,因此需要构建新的缓存。
您可以使用以下内容将生成的宏作为 可安装触发器 启用
function createSpreadsheetOpenTrigger() { var ss = SpreadsheetApp.getActive(); ScriptApp.newTrigger('onEdit') .forSpreadsheet(ss) .onEdit() .create(); }
生成的模型类
use Grosv\EloquentSheets\SheetModel; class YourGoogleSheetsModel extends SheetModel { protected $spreadsheetId = '1HxNqqLtc614UVLoTLEItfvcdcOm3URBEM2Zkr36Z1rE'; // The id of the spreadsheet protected $sheetId = '0'; // The id of the sheet within the spreadsheet (gid=xxxxx on the URL) protected $headerRow = '1'; // The row containing the names of your columns (eg. id, name, email, phone) }
此模型可以执行基本的 Eloquent 模型操作,因为它实际上是一个 Eloquent 模型。尽管目前它仅限于读取/列表方法。更新和插入目前不起作用,因为您通过编辑电子表格来做这些事情。
缺少什么
最终,我希望添加插入和更新方法,这样您就可以向电子表格追加行并编辑现有行。我已经完成了最重要的部分...一个在更新或插入时使缓存无效的方法。现在我只需要更新和插入方法。