Usando Planilhas Google com Eloquent

Image Usando Planilhas Google com Eloquent

Instalação

composer require grosv/eloquent-sheets
composer require revolution/laravel-google-sheets

Configuração

Este pacote fornece um modelo eloquente que fica em cima de uma planilha do Google. Para que funcione, há duas coisas que sua planilha precisa ter. Uma é uma linha de cabeçalho que contém o nome de suas colunas. O padrão é a linha 1 (a linha superior), mas pode ser qualquer linha na planilha. A outra é uma coluna de chave primária. Eloquent assume que sua coluna de chave primária é nomeada id. Caso contrário, defina-o no seu modelo como faria normalmente.

Rode

php artisan vendor:publish --provider="PulkitJalan\Google\GoogleServiceProvider" --tag="config"

E configure o arquivo

google.php
// OAuth
 'client_id'        => env('GOOGLE_CLIENT_ID', ''),
 'client_secret'    => env('GOOGLE_CLIENT_SECRET', ''),
 'redirect_uri'     => env('GOOGLE_REDIRECT', ''),
 'scopes'           => [\Google_Service_Sheets::DRIVE, \Google_Service_Sheets::SPREADSHEETS],
 'access_type'      => 'online',
 'approval_prompt'  => 'auto',
 'prompt'           => 'consent', //"none", "consent", "select_account" default:none// or Service Account
 'file'    => storage_path('credentials.json'),
 'enable'  => env('GOOGLE_SERVICE_ENABLED', true),
Siga os passos descritos na documentão
Siga os passos de configuração na documentação
https://github.com/kawax/laravel-google-sheets

Uso

Exemplo de uma tabela de usuários.

image-alt153

Configurando no laravel

Vamos criar um novo model para esta tabela

php artisan make:sheet-model

1.Digite o caminho completo para o diretório em que deseja criar o arquivo de modelo (o padrão é app_path ()):

2. Digite o nome que você deseja usar para a sua classe de modelo:

UserSheet

3. Cole o URL de edição da sua planilha do Google.

4. Confirme se o caminho e o nome completo da classe estão corretos:

5. E você receberá o modelo de uma macro que pode ser anexada à sua planilha que informará ao site que a planilha foi alterada, portanto, um novo cache deve ser criado.

image-alt153

O resultado da classe será algo

useGrosv\EloquentSheets\SheetModel;

classUserSheetextendsSheetModel
{
	protected$spreadsheetId ='id????';
	protected$sheetId ='0';
	protected$headerRow ='1';
}

Exemplo

$userSheet =newUserSheet();

$userSheet->first();

Ira retornar algo como

App\UserSheet]8;;file:///.... {#1420
  #spreadsheetId: "123456-msjNDIXeSjPfRE_6pQ"
  #sheetId: "0"
  #headerRow: "1"
  #rows: []
  +primaryKey: "id"
  +cacheName: "sushi-app-user-sheet"
  #headers: null
  #connection: null
  #table: "user_sheets"
  #keyType: "int"
  +incrementing: true
  #with: []
  #withCount: []
  #perPage: 15
  +exists: true
  +wasRecentlyCreated: false
  #attributes: array:3 [
    "id" => "1.0"
    "name" => "name1"
    "mail" => "mail1@mail;com"
  ]
  #original: array:3 [
    "id" => "1.0"
    "name" => "name1"
    "mail" => "mail1@mail;com"
  ]
  #changes: []
  #casts: []
  #classCastCache: []
  #dates: []
  #dateFormat: null
  #appends: []
  #dispatchesEvents: []
  #observables: []
  #relations: []
  #touches: []
  +timestamps: true
  #hidden: []
  #visible: []
  #fillable: []
  #guarded: array:1 [
    0 => "*"
  ]
}

Com o modelo do Google Sheet, você pode usar os recursos eloquentes básicos; no entanto, o modelo pode usar apenas métodos de leitura e l