Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

138
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda