grosv/eloquent-sheets

由 Google Sheets 支持的 Eloquent 模型

1.2.3 2020-09-07 22:59 UTC

This package is auto-updated.

Last update: 2024-09-08 08:31:38 UTC


README

一个允许您在 Google Sheet 上放置 Eloquent 的包。

Latest Version on Packagist StyleCI Build Status

此包提供了一个位于 Google Sheet 上方的 Eloquent 模型。您可以使用包含列名的标题行。默认为第 1 行(顶部行),但可以是工作表中的任何一行。或者,您可以在模型中定义一个标题数组。如果您选择不在电子表格中包含主键列,则每个列都将获得一个自动递增的 id(或您在模型中称为主键列的任何名称)。

当您使用此包时,模型的初始调用将读取工作表并将每一行存储为基于文件 sqlite 数据库中的表中的记录。模型的后续调用使用该 sqlite 数据库,因此电子表格的变化不会反映在数据库中。但是,有两种方法可以使 sqlite 缓存无效并使其重新创建:

  1. 您可以在模型上调用 invalidateCache() 方法,例如 YourGoogleSheetModel::first()->invalidateCache()

  2. 一个可以附加到您的 Google 工作表的宏。该宏监听电子表格中的编辑,当发生编辑时,它会向此包提供的路由发送请求,删除 sqlite 数据库,迫使下次使用模型时重新加载。

安装

composer require grosv/eloquent-sheets

配置

此包依赖于 revolution/laravel-google-sheets。您必须处理该包及其依赖项的配置,以便此包工作。按照其说明(尽管您可以跳过 composer require 部分,因为我在这里已经做了)。

用法

考虑以下 Google Sheet。我们想在上面放置一个 Eloquent 模型。

Screen Shot 2020-03-03 at 3 02 15 PM

php artisan make:sheet-model

步骤 1 - 输入您想要创建模型文件的目录的完整路径(默认为 app_path())

Screen Shot 2020-03-11 at 4 48 48 PM

步骤 2 - 输入您想要使用的模型类名

Screen Shot 2020-03-03 at 3 11 10 PM

步骤 3 - 将您的 Google 工作表的编辑网址粘贴到浏览器地址栏中

Screen Shot 2020-03-03 at 3 13 33 PM

步骤 4 - 确认路径和完整类名正确无误

Screen Shot 2020-03-03 at 3 14 47 PM

步骤 5 - 您将收到一个宏的模板,您可以将它附加到您的表格上,告诉您的网站表格已更改,因此需要构建新的缓存。

Screen Shot 2020-03-03 at 3 20 58 PM

您可以使用以下内容将生成的宏作为 可安装触发器 启用

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 模型。尽管目前它仅限于读取/列表方法。更新和插入目前不起作用,因为您通过编辑电子表格来做这些事情。

缺少什么

最终,我希望添加插入和更新方法,这样您就可以向电子表格追加行并编辑现有行。我已经完成了最重要的部分...一个在更新或插入时使缓存无效的方法。现在我只需要更新和插入方法。

致谢

如果没有Caleb Porzio的Sushi,这个包将无法实现。如果你还没有在GitHub上赞助他,你应该去赞助。