【问题标题】:error when seeding data into a database in laravel 8在laravel 8中将数据播种到数据库时出错
【发布时间】:2021-10-29 23:23:42
【问题描述】:

将数据播种到我的数据库时出现此错误。显然我有 2 个模型 bookings 和 bookingstatus 模型。bookingstatus 播种器运行良好,并且播种状态非常好,但是当涉及到预订时,数据无法播种。这是弹出的错误

ErrorException 

  Undefined variable:

  at F:\Main Server\htdocs\voskillproject\database\seeders\BookingsSeeder.php:73
     69▕             'event_details'=>'we would like to book you for a wedding'
     70▕
     71▕         ]);
     72▕         $Approved->bookingstatus()->attach($Approvedstatus);
  ➜  73▕         $Cancelled->bookingstatus()->attach($$Cancelledstatus);
     74▕         $DepositPaid->bookingstatus()->attach($DepositPaidstatus);
     75▕         $Published->bookingstatus()->attach($Publishedstatus);
     76▕     }
     77▕ }

  1   F:\Main Server\htdocs\voskillproject\database\seeders\BookingsSeeder.php:73
      Illuminate\Foundation\Bootstrap\HandleExceptions::handleError("Undefined variable: ", "F:\Main Server\htdocs\voskillproject\database\seeders\BookingsSeeder.php")

  2   F:\Main Server\htdocs\voskillproject\vendor\laravel\framework\src\Illuminate\Container\BoundMethod.php:36
      Database\Seeders\BookingsSeeder::run()

这是我的 BookingsFactory

<?php

namespace Database\Factories;

use App\Models\Bookings;
use Illuminate\Database\Eloquent\Factories\Factory;

class BookingsFactory extends Factory
{
    /**
     * The name of the factory's corresponding model.
     *
     * @var string
     */
    protected $model = Bookings::class;

    /**
     * Define the model's default state.
     *
     * @return array
     */
    public function definition()
    {
        return [
            'is_booking'=>0,
            'full_name'=>$this->faker->unique()->name,
            'location'=>$this->faker->location,
            'phone'=>$this->faker->number,
            'is_booking'=>3,
            'email'=>$this->faker->safeEmail,
            'date'=>$this->faker->date,
            'event_id'=>$this->faker->event_id,
            'event_details'=>$this->faker->paragraph,
            
        ];
    }
}

这是我的数据库播种器

<?php

namespace Database\Seeders;

use App\Models\Role;
use App\Models\Bookingstatus;
use Illuminate\Database\Seeder;
use Database\Seeders\RoleSeeder;
use Database\Seeders\Userseeder;
use Database\Seeders\BookingsSeeder;
use Database\Seeders\BookingstatusSeeder;

class DatabaseSeeder extends Seeder
{
    /**
     * Seed the application's database.
     *
     * @return void
     */
    public function run()
    {
        $this->call([
            BookingsSeeder::class,
            BookingstatusSeeder::class,
        ]);
        \App\Models\Bookingstatus::factory()->hasbookings(10)->create();

        
    }
}

我不明白代码哪里出错了

【问题讨论】:

    标签: laravel-8 factory laravel-seeding


    【解决方案1】:

    我知道问题出在哪里 1.首先在预订工厂我必须将faker详细信息更改为此

    return [
                'is_booking'=>0,
                'full_name'=>$this->faker->unique()->name,
                'location'=>$this->faker->address,
                'phone'=>$this->faker->numerify('###-###-####'),
                'is_booking'=>3,
                'email'=>$this->faker->safeEmail,
                'date'=>$this->faker->unique()->dateTime()->format('Y/m/d'),
                'event_id'=>$this->faker->randomDigit(),
                'event_details'=>$this->faker->paragraphs(2, true),
                
            ];
    

    我也应该在 bookingstatus 工厂的顶部导入此代码

    使用 Illuminate\Support\Str;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-03-01
      • 2021-04-01
      • 2018-10-01
      • 2015-09-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多