کیارش مالکی
5 سال پیش توسط کیارش مالکی مطرح شد
2 پاسخ

Blueprint

سلام میخوام یک متدد در Blueprint بازنویسی کنم. اومدم یک پوشه به نام service داخل app ساختم و یک فایل از کلاس با نام db.php ایجاد کردم که اینم کدش هست.

<?php namespace App\service;

use Illuminate\Database\Schema\Blueprint;

class db extends Blueprint
{
    public function full_time($model = '')
    {
        if (is_array($model)) {
            $ex = explode('|', $model);
            if(in_array('C',$ex)){
                $this->integer('created_at')->default('');
                $this->integer('created_by')->default('');
            }
            if(in_array('U',$ex)){
                $this->integer('update_at')->default('');
                $this->integer('update_by')->default('');
            }
            if(in_array('D',$ex)){
                $this->integer('delete_at')->default('');
                $this->integer('delete_by')->default('');
            }
        } else {
            $this->integer('created_at')->default('');
            $this->integer('update_at')->default('');
            $this->integer('delete_at')->default('');
            $this->integer('created_by')->default('');
            $this->integer('update_by')->default('');
            $this->integer('delete_by')->default('');
        }

    }
}

و داخل مایگریشن اینو اینطور نوشتم:

    public function up()
    {
        Schema::create('users', function (db $table) {
            $table->id();
            $table->string('name',100)->default('');
            $table->string('family',100)->default('');
            $table->char('gender',1)->default('0');
            $table->string('national_code',10)->default('');
            $table->string('photo',255)->default('');
            $table->string('id_number',10)->default('');
            $table->integer('birthday')->default(null);
            $table->full_time('C|U|D');
        });
    }

و کد دستوری php artisan migrate:fresh را میزنم. وخطایی که می ده:

php artisan migrate:fresh
Dropped all tables successfully.
Migration table created successfully.
Migrating: 2014_10_12_000000_create_users_table

   TypeError 

  Argument 1 passed to CreateUsersTable::{closure}() must be an instance of App\service\db, instance of Illuminate\Database\Schema\Blueprint given, called in /run/media/nader/4BE03F7747D03697/project/iranftc/vendor/laravel/framework/src/Illuminate/Database/Schema/Builder.php on line 166

  at database/migrations/2014_10_12_000000_create_users_table.php:17
    13|      * @return void
    14|      */
    15|     public function up()
    16|     {
  > 17|         Schema::create('users', function (db $table) {
    18|             $table->id();
    19|             $table->string('name',100)->default('');
    20|             $table->string('family',100)->default('');
    21|             $table->char('gender',1)->default('0');

      +4 vendor frames 
  5   database/migrations/2014_10_12_000000_create_users_table.php:27
      Illuminate\Support\Facades\Facade::__callStatic()

      +34 vendor frames 
  40  artisan:37
      Illuminate\Foundation\Console\Kernel::handle()

ثبت پرسش جدید
حسام موسوی
تخصص : طراح و برنامه نویس
@hesammousavi 5 سال پیش مطرح شد
0

سلام این روش تغییر blueprint از کجا اومده ؟
اون مقداری که به callback کد زیر پاس میده

 Schema::create('users', function (db $table) {

دست شما نیست که چی باشه اینو هسته کد پاس میده و مشخص میکنه نوعش چی باشه


کیارش مالکی
تخصص : Backend developer
@nader.register 4 سال پیش مطرح شد
0

خب من extends کردم از Blueprint و یک متد بهش اضافه کردم و استفاده کردم. یعنی به این صورت نمی تونیم بنویسیم؟ پس اگر بخوایم که یه متد جدید با مثالی که بالا زدم اضاف کنیم پس چی کار کینم


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

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