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

137
Vistas
Laravel Eloquent - Relación de muchos a uno

Tengo Modelos: ArtObjects y Fotos:

 class Photo extends Model { protected $fillable = ['caption','description','alternative_text']; public function artObject() { return $this->belongsTo('App\ArtObject'); } } class ArtObject extends Model { /** * The attributes that are mass assignable. * * @var array */ protected $fillable = [ 'title', 'description', 'rating', 'popularity', 'type', 'price' ]; public function photos() { return $this->hasMany(ArtObjectPhoto::class); } }

Controladores:

Controlador ArtObject:

 public function store(ArtObjectUploadRequest $request) { $art_object = ArtObject::create(request(['title', 'description', 'rating', 'popularity', 'type', 'price'])); $this->validate($request, [ 'title' => 'required', 'description' => 'required' ]); foreach ($photo_ids = Input::get('photos') as $photo_id) { $photo = Photo::find($photo_id); /* Problem is here - The user wants to attach the selected photos with the art-object, ........ Please advise, thanks in anticipation !!! */ } //save the artobject to the database $art_object->save(); //And redirect to the home page return redirect('/'); }

Problema: El usuario quiere adjuntar las fotos seleccionadas con el objeto de arte. Tenga en cuenta que las fotos ya existen en la base de datos. Probé opciones: guardar (), asociar (), pero nada ayudó. Entiendo que una vez que encuentre () la foto, debería darme un objeto Foto que debería poder guardar () con $ art_object. Quiere que haga new() y asigne desde DB y asigne al objeto Photo. Pero no creo que esta sea la forma correcta de hacerlo. Creo que esta no es la mejor manera de implementar la relación de muchos a, entonces, ¿cuál es la mejor manera de salvar esta relación? Por favor avise, gracias de antemano !!!

about 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

De acuerdo con la regla de relación de muchos a uno en la base de datos, la clave externa que conecta las tablas siempre se guarda en la tabla que tiene una relación de "muchos".

Como aquí, Un ArtObject puede tener muchas Fotos. Entonces, Esa tabla "Muchas" es Fotos. Su modelo de fotografía debe tener un atributo denominado art_object_id como clave externa.

Luego, primero debe guardar ese objeto ArtObject y guardar la identificación de este objeto en la tabla de fotos en todas aquellas filas cuya identificación es seleccionada por el usuario.

 $art_object = ArtObject::create(request(['title', 'description', 'rating', 'popularity', 'type', 'price'])); $this->validate($request, [ 'title' => 'required', 'description' => 'required' ]); //save the artobject to the database $art_object->save(); foreach ($photo_ids = Input::get('photos') as $photo_id) { $photo = Photo::find($photo_id); $photo->art_object_id = $art_object->id; $photo->save(); }

Después de hacer esto, puede obtener el ArtObject relacionado de una foto mediante el método que definió en el modelo de foto para relacionar ArtObject y las tablas de fotos. También puede obtener las fotos relacionadas con un ArtObject mediante el método definido en ArtObject.

En el modelo ArtObject: -

 public function photos() { return $this->hasMany('App\Photo'); }

En modelo de foto: -

 public function artObject() { return $this->belongsTo('App\ArtObject'); }
about 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