Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

561
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda