گوگل شیت به عنوان دیتابیس لاراول!
خلاصهٔ کاملتر
پکیج Laravel Google Sheets Database Driver از AmazingBV یه راهحل جالب برای تیمهایی ارائه میده که دادههاشون حجم کمیه و اسپردشیت از قبل بخشی از فرآیند کارشونه. ایده اصلی سادهست: اسپردشیت همون دیتابیسه، هر تب یه جدوله، و ردیف اول (هدر) ستونها رو تعریف میکنه.
برای راهاندازی، علاوه بر نصب پکیج، باید یه سرویس اکانت در Google Cloud بسازی، Google Sheets API رو فعال کنی و فایل JSON کردانشیالها رو بگیری. بعدش کافیه چند خط در .env تنظیم کنی:
DB_CONNECTION=google-sheets
DB_DATABASE=your-google-spreadsheet-id
GOOGLE_SHEETS_CREDENTIALS_PATH=/absolute/path/to/service-account.jsonمایگریشنها دقیقاً مثل لاراول معمولی نوشته میشن؛ وقتی اجراشون میکنی، یه تب جدید با همون نام جدول و ستونهای مربوطه توی اسپردشیت ظاهر میشه. مدل Eloquent هم فقط به یه property اضافه نیاز داره:
class Rsvp extends Model
{
protected $connection = 'google-sheets';
protected $guarded = [];
protected $casts = ['attending' => 'boolean'];
}از اینجا به بعد، متدهای معمول مثل create، where، orderBy و get بدون هیچ تغییری کار میکنن. هر دادهای که ثبت میشه، بلافاصله توی شیت نمایان میشه — یعنی آدمهای غیر فنی تیم هم میتونن مستقیم دادهها رو ببینن و ویرایش کنن.
درایور یه زیرمجموعه از query API رو پشتیبانی میکنه: where، whereIn، whereNull، orderBy، limit، offset، aggregate هایی مثل count و avg، و یه inner join ساده در حافظه. اما SQL خام، groupBy، having، union و تراکنشهای واقعی پشتیبانی نمیشن. DB::transaction() بدون خطا اجرا میشه ولی rollback نداره.
برای مدیریت محدودیتهای API گوگل (که نسبتاً سختگیرانهان)، پکیج امکاناتی مثل کش درونپروسهای، throttle قابل تنظیم، retry با exponential backoff، و اتصال به cache store لاراول (مثل Redis یا file) رو داره. یه نکته جالب هم اینه که پکیج یه تب به اسم Database Index توی اسپردشیت میسازه که لینکهایی به بقیه تبهای جدول داره — خیلی برای کسایی که مستقیم شیت رو باز میکنن راحته.
نکات کلیدی:
- هر تب اسپردشیت = یه جدول، ردیف هدر = ستونها
- مناسب برای ابزارهای داخلی، پروتوتایپ و اپهای سبک با داده کم
- جایگزین MySQL یا PostgreSQL نیست — تراکنش، foreign key و constraint واقعی نداره
- مایگریشن و Eloquent بدون تغییر خاصی کار میکنن
- سیستم کش و throttle برای دور زدن محدودیت API گوگل تعبیه شده




