نیما
4 سال پیش توسط نیما مطرح شد
3 پاسخ

آیا دیتا تایپ ها رو درست انتخاب کردم

سلام وقت بخیر
دوستان برای درست کردن بهینه ترین حالت ممکن آیا من دیتاتایپ ها رو درست انتخاب کرده ام؟

    public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            $table->id();
            $table->string('name');
            $table->string('userName');
            $table->enum('gender', ['male', 'female','other'])->default('male');
            $table->string('email')->unique();
            $table->string('password');
            $table->string('national_identity')->nullable();
            $table->date('birthday')->nullable();
            $table->string('mobile')->nullable();
            $table->text('bio')->nullable();
            $table->tinyInteger('status')->default(1);
            $table->boolean('verified')->default(0);
            $table->tinyInteger('role')->default(1);
            $table->ipAddress('last_login_ip')->nullable();
            $table->timestamp('last_login_at')->nullable();
            $table->string('avatar')->default('avatar.jpg');
        });
    }

مثلا برای فیلد status که نهایتا میخوام در فیلدش ۱ یا ۲ یا ۳ رو نمایش بدم برای وضعیت آیا باید مقداری هم براش در نظر گرفته بشه که فضای حافظه الکی در گیر نباشه؟
ممنون میشم بنده رو راهنمایی بفرمایید
با تشکر


ثبت پرسش جدید
محمدحسن یگانه
تخصص : Full-Stack Web Developer Freel...
@mhyeganeh 4 سال پیش مطرح شد
1

هیچ کدوم از این مواردی که عرض میکنم ضروری نیست ولی جهت محکم کاری اگر تمایل داشتید:

۱- طول کاراکترهای فیلد موبایل رو روی 11 قرار بدید.

۲- برای خوانایی راحت تر خودتون و بقیه در آیند، شاید اگر برای فیلدهای status و role از مقادیر حروفی بجای کد عددی و با حالت enum استفاده کنید بهتر باشه. مگر اینکه جدول roles دارید و اون در اصلی role_id هست که در این صورت هم به نظرم بهتره اولا اسمش رو role_id بذارید و ثانیا اینکه از نوع unsignedTinyInteger باشه. و الا عناوین معناداری مثل admin و‌ customer و confirmed و waiting و ...

۳- تغییر اسم verified به is_verified که این سبک بیشتر مرسوم هست برای این جور گزینه ها از نوع boolean.

۴- شاید بهتر باشه برای last_login_at هم از نوع datetime استفاده کنید. عرض کردم بخشی از این موارد سلیقه ای هست و با هر دو روش اوکی هست. ولی شاید جهت حفظ یکپارچگی با فرمتی که خود لاراول برای created_at و updated_at استفاده میکنه و احیانا استفاده های بعدی بد نباشه که از datetime استفاده کنید بجاش.

۵- برای فیلد avatar هم سلیقه شخصی من برای کاربرانی که تصویر آواتار ندارند این هست که بجای مقدار پیشفرض 'avatar.jpg' مقدار Null قرار میدم. یکم حجم دیتابیستون هم کمتر میشه. فقط اینجوری درکدها بایستی چک کنید که اگر تصویر آواتار نداشت فلان تصویر رو بجاش نشون بده. و یا هم اینکه یک Accessor براش تنظیم کنید. و یا هم اینکه همین روش خودتون. 😊


saman
@saman1111 4 سال پیش مطرح شد
1

سلام
از نظر من تایپ هاتون مناسبه.
برای status میتونید از enum استفاده کنید اگر لازم میدونید ولی همین هم عالیه


علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 4 سال پیش مطرح شد
1

بله.. مناسب هستند


محمدحسن یگانه
تخصص : Full-Stack Web Developer Freel...
@mhyeganeh 4 سال پیش مطرح شد
1

هیچ کدوم از این مواردی که عرض میکنم ضروری نیست ولی جهت محکم کاری اگر تمایل داشتید:

۱- طول کاراکترهای فیلد موبایل رو روی 11 قرار بدید.

۲- برای خوانایی راحت تر خودتون و بقیه در آیند، شاید اگر برای فیلدهای status و role از مقادیر حروفی بجای کد عددی و با حالت enum استفاده کنید بهتر باشه. مگر اینکه جدول roles دارید و اون در اصلی role_id هست که در این صورت هم به نظرم بهتره اولا اسمش رو role_id بذارید و ثانیا اینکه از نوع unsignedTinyInteger باشه. و الا عناوین معناداری مثل admin و‌ customer و confirmed و waiting و ...

۳- تغییر اسم verified به is_verified که این سبک بیشتر مرسوم هست برای این جور گزینه ها از نوع boolean.

۴- شاید بهتر باشه برای last_login_at هم از نوع datetime استفاده کنید. عرض کردم بخشی از این موارد سلیقه ای هست و با هر دو روش اوکی هست. ولی شاید جهت حفظ یکپارچگی با فرمتی که خود لاراول برای created_at و updated_at استفاده میکنه و احیانا استفاده های بعدی بد نباشه که از datetime استفاده کنید بجاش.

۵- برای فیلد avatar هم سلیقه شخصی من برای کاربرانی که تصویر آواتار ندارند این هست که بجای مقدار پیشفرض 'avatar.jpg' مقدار Null قرار میدم. یکم حجم دیتابیستون هم کمتر میشه. فقط اینجوری درکدها بایستی چک کنید که اگر تصویر آواتار نداشت فلان تصویر رو بجاش نشون بده. و یا هم اینکه یک Accessor براش تنظیم کنید. و یا هم اینکه همین روش خودتون. 😊


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام