Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

563
Views
Intentando obtener la propiedad 'id' del error de Laravel que no es un objeto

Estoy trabajando en el código de otra persona en un proyecto y cuando intento ejecutar la php artisan migrate , ¡me aparece un error!

 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), ]); }

Recibo un error debido a esta línea 'plan_id' => $plan->id,

Aquí está el mensaje de error -

 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))

Cualquier idea de qué está mal con esa línea 'plan_id' => $plan->id, y cómo solucionarlo

over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Esto se debe a que no hay registros en el modelo de plan. Primero verifique si existen registros en el modelo de plan.

 dd($plan);

o

 $plan = $plan ? $plan->id : '';
over 4 years ago · Santiago Trujillo Report

0

El problema es exactamente lo que dice el error. $plan no es un objeto, por lo que intentar acceder a una propiedad en él da como resultado un error.

¿Por qué $plan no es un objeto? Porque Plan::find(1); no puede encontrar un plan con una identificación de 1. $plan probablemente sea null , por lo que está ejecutando efectivamente null->id .

Dado que está ejecutando migraciones, es posible que desee asegurarse de que este código se ejecute después de que se complete la tabla de planes. Le daría una oportunidad con php artisan migrate:fresh --seed (advertencia: esto vaciará sus tablas de base de datos y luego las volverá a llenar con migraciones/sembradoras) o siembra en general.

Considere también usar findOrFail en lugar de find para generar una excepción si no se encuentra el modelo, ya que su código posterior en este ejemplo depende del modelo que se encuentre.

over 4 years ago · Santiago Trujillo Report

0

Asegúrese de que sus planes estén sembrados antes de que se ejecute esta migración. Es más seguro usar findOrFail en su lugar. De esta manera, sabrá el instante en que no se encuentra un plan.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!