Truffle: مدلهای Eloquent روی دیتابیس درونحافظهای
خلاصهٔ کاملتر
Truffle یه پکیج لاراوله که یه ایدهی ساده ولی کاربردی داره: میذاره مدلهای Eloquent بهجای دیتابیس اصلیِ شما، از یه دیتابیس SQLite درونحافظهای (in-memory) استفاده کنن. این دقیقاً برای دادههای ثابت و جدولهای مرجع بهدرد میخوره — مثل کشورها، ارزها یا نقشها — همون دادههایی که دوست داری با Eloquent کوئری بگیری ولی نمیخوای بارِ migration و ذخیرهسازی توی دیتابیس اصلی رو تحمیل کنن.
سادهترین راه استفاده، تعریف یه آرایهی $records مستقیم توی مدله. کافیه trait مربوط به Truffle رو به مدل اضافه کنی؛ اونوقت پکیج یه جدول موقت SQLite میسازه و وقتی مدل برای اولین بار استفاده شد پُرش میکنه:
class Country extends Model
{
use Truffle;
protected $records = [
['id' => 1, 'name' => 'United States', 'code' => 'US'],
['id' => 2, 'name' => 'Canada', 'code' => 'CA'],
];
}نکتهی خوبش اینه که بعدش این مدل دقیقاً مثل هر مدل Eloquent دیگهای رفتار میکنه و همهی امکانات query builder و relationship و attribute سر جاشونن. یعنی میتونی همونجور که عادت داری روش کوئری بزنی:
$northAmerica = Country::whereIn('code', ['US', 'JM'])->get();وقتی دادهت بزرگتر شد، Truffle اجازه میده رکوردها رو به فایلهای CSV، JSON یا XML منتقل کنی و مسیر فایل رو با یه پراپرتیِ $truffleFile مشخص کنی. اینجوری داده از منطق مدل جدا میمونه و در عین حال زیر کنترل نسخه (version control) باقی میمونه.
هرچند Truffle معمولاً میتونه نوع ستونها رو خودش حدس بزنه، ولی میتونی با یه پراپرتیِ $schema و کمک enum به اسم DataType، نوعها رو صریح تعریف کنی تا کستِ درست و یکپارچگیِ داده تضمین بشه. برای کارایی هم یه قابلیت کش داره: با روشن کردن $truffleCache ساختار و دادهی جدول SQLite کش میشه (و با $truffleCacheTtl میتونی مدت اعتبارش رو تعیین کنی).
نصبش با Composer انجام میشه و به محض اینکه trait رو به مدلهات اضافه کنی بدون تنظیمات اضافه کار میکنه. این پکیج PHP 7.4 یا بالاتر میخواد و از لاراول 5.5 به بعد پشتیبانی میکنه.
نکات کلیدی:
- Truffle میذاره مدلهای Eloquent روی یه SQLite درونحافظهای کار کنن، نه دیتابیس اصلی
- مناسب دادههای ثابت و جدولهای مرجع مثل کشورها، ارزها و نقشها، بدون migration
- داده رو میتونی مستقیم تو $records بذاری یا از فایل CSV/JSON/XML بارگذاری کنی
- query builder و relationshipهای Eloquent کامل کار میکنن و نوع ستونها هم با enum DataType قابل تعریفه
- نصب با Composer، نیازمند PHP 7.4+ و لاراول 5.5 به بالا




