ستون های تولید شده یا Generated Columns که در نسخه ی ۵.۷ برای MySQL در نسخه ی ۱۲ برای PostgreSQL و در نسخه ی 3.31.0 برای SQLite معرفی شد. آنها را می توان در خلال دستورات create یا alter جداول ایجاد کرد و روشی است برای ذخیره ی داده بدون ارسال آنها در زمان اجرای دستورات insert یا update در واقع ستون های تولید شده ستون های خاصی هستند که همیشه مقدار آنها از ستون های دیگر به دست می آید و پایگاه داده خود مسول مقداردهی آنهاست.
دو نوع Generated Columns داریم Virtual و Stored که از عبارات مثل زیر می توان برای آنها استفاده کرد:
یک فروشگاه مجازی با جداولی به شکل زیر در نظر بگیرید لینک اسکیما:
به تعریف جدول order_items توجه کنید:
روش دیگری که استفاده می شود محاسبه در هنگام واکشی به شکل زیر:
مزایا:
برای داده ای مناسب است که تغییرات آن قابل توجه باشد. هزینه ی virtual columns خود را در زمان واکشی نشان می دهد زیرا که هر دفعه ماشین درگیر محاسبه ی مقدار می شود.
برای داده ای مناسب است که تغییرات آن زیاد نباشد مثل total_item_price در مثال بالا زیرا زمانی که رکورد ایجاد شد مقدار price و quantity تغییر نمی کنند.
به خطوط 9 و 23 توجه کنید هر دو نوع ستون های تولید شده با استفاده از کلمه ی AS تعریف می شوند ولی اگه بخواهیم از نوع stored باشد باید بعد از عبارت بیان شود.
از همین سینتکس می توان در زمان تغییر جدول نیز استفاده کرد:
به راحتی با استفاده از متد های زیر می توانید هر دو نوع Generated Column را در مایگریشن های خود تعریف کنید:
$table->decimal('total_item_price',10,2)->storedAs('quantity * product_price'); $table->decimal('total_item_price',10,2)->virtualAs('quantity * product_price');
پیروز باشید...