راکت

Blueprint

2 پاسخ

سلام میخوام یک متدد در 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()
ثبت پرسش جدید

پاسخ‌ها

2
حسام موسوی
حسام موسوی
@hesammousavi

تخصص: طراح و برنامه نویس

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

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

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

کیارش مالکی
کیارش مالکی
@nader.register

تخصص: Backend developer

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

شاید پاسخ شما همین‌جا باشد

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

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