Saya sedang mengerjakan kode orang lain dalam sebuah Proyek dan ketika saya mencoba menjalankan php artisan migrate saya mengalami kesalahan!

class SeedAdminUser extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        // seed admin user
        $admin = User::create([
            'name' => 'Admin',
            'email' => 'admin@admin.se',
            'password' => Hash::make('password'),
            'plan_id' => null,
        ]);

        $admin->assignRole(['administrator', 'company']);

        $plan = Plan::find(1);
        Subscription::create([
            'user_id' => 1,
            'plan_id' => $plan->id,
            'starts_at' => Carbon::now(),
            'ends_at' => $plan->interval == 'monthly' ? Carbon::now()->addMonth() : Carbon::now()->addMonths(12),
        ]);
    }

Saya mendapatkan kesalahan karena baris ini 'plan_id' => $plan->id,

Berikut adalah pesan Kesalahan -

   ErrorException 

  Trying to get property 'id' of non-object

  at database/migrations/2021_06_04_055759_seed_admin_user.php:34
    30| 
    31|         $plan = Plan::find(1);
    32|         Subscription::create([
    33|             'user_id' => 1,
  > 34|             'plan_id' => $plan->id,
    35|             'starts_at' => Carbon::now(),
    36|             'ends_at' => $plan->interval == 'monthly' ? Carbon::now()->addMonth() : Carbon::now()->addMonths(12),
    37|         ]);
    38|     }

  1   database/migrations/2021_06_04_055759_seed_admin_user.php:34
      Illuminate\Foundation\Bootstrap\HandleExceptions::handleError("Trying to get property 'id' of non-object", "/Applications/MAMP/htdocs/iSurvey/database/migrations/2021_06_04_055759_seed_admin_user.php", [Object(App\User)])

      +21 vendor frames 
  23  artisan:37
      Illuminate\Foundation\Console\Kernel::handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))

Ada Ide apa yang salah dengan baris itu 'plan_id' => $plan->id, dan bagaimana cara memperbaikinya

2
Istiak Mahmood 16 September 2021, 12:33

2 jawaban

Jawaban Terbaik

Ini karena tidak ada catatan dalam model rencana, Pertama periksa apakah ada catatan dalam model rencana

dd($plan);

Atau

$plan = $plan ? $plan->id : '';
2
Bhagyaraj 16 September 2021, 10:32

Masalahnya persis seperti yang dikatakan kesalahan itu. $plan bukan objek, jadi mencoba mengakses kepatutan di atasnya menghasilkan kesalahan.

Mengapa $plan bukan objek? Karena Plan::find(1); tidak dapat menemukan paket dengan id 1. $plan mungkin null jadi Anda menjalankan null->id secara efektif.

Karena Anda menjalankan migrasi, Anda mungkin ingin memastikan kode ini berjalan setelah tabel rencana Anda diisi. Saya akan mencobanya dengan php artisan migrate:fresh --seed (peringatan: ini akan mengosongkan tabel db Anda dan kemudian mengisinya kembali dengan migrasi/seeder) atau seeding secara umum.

Pertimbangkan juga untuk menggunakan findOrFail alih-alih find untuk memberikan pengecualian jika model tidak ditemukan, karena kode Anda selanjutnya dalam contoh ini bergantung pada model yang ditemukan.

2
maybebot 16 September 2021, 10:33