Вставить сообщение и изображения только в одну запись

#laravel

#laravel

Вопрос:

У меня есть таблица сообщений с полем изображения внутри нее, и вот моя проблема. Мне нужно проверить, вставил ли пользователь одно изображение или нет, и если он это сделает, вставьте изображение с другими полями. На самом деле с моим кодом сначала вставьте сообщения (titulo, contenido y url) и, если изображение существует, вставьте изображение, но проблема в том, что это генерирует мне две записи, одну для полей сообщений (заголовок, содержимое и URL), а вторую с полем изображения.

Как это сделать, используя create

 Appmodelospost::create($datosaInsertar);
  

вместо save()?

 $posts= new Appmodelospost();
 $posts->titulo= $request->titulo;
$posts->contenido= $request->contenido;
$posts->imagen= $request->imagen;
$posts->save();
  

КОНТРОЛЛЕР ХРАНИЛИЩА

   public function store(Request $request)
        {




/****************************CREACION POST*********************************/
                $nombreimagen = 'mesteban_'.time().'.'.$request->file('imagen')->getClientOriginalExtension();
               $datosaInsertar = 
               array(
                    'titulo' => $request->titulo,
                    'contenido' => $request->contenido,
                    'url' => str_slug($request->titulo),
                    );
               $creandoPost = Appmodelospost::create($datosaInsertar);
                 Session::flash('estado','El post de nombre ..:: '.$request->titulo.' ::.. ha sido creado correctamente');

                /********************FIN CREACION POST**************/

                 /************************CREACION IMAGEN**************/


                 $ruta = public_path('imaposts\');


               if($nombreimagen):
                   $request->file('imagen')->move($ruta,$nombreimagen);

             Appmodelospost::create(array('imagen'=> $nombreimagen));
                endif;
         /************************FIN CREACION IMAGEN*********************/

                return redirect()->to('/admin/posts');
            }
  

СООБЩЕНИЕ МОДЕЛИ

 <?php

namespace Appmodelos;

use IlluminateDatabaseEloquentModel;

class post extends Model
{

    protected $table = 'posts';

    protected $fillable = ['titulo','contenido','imagen','url'];

}
  

Извините за мой ужасный английский

Ответ №1:

Что вам нужно сделать, довольно просто

Отредактируйте второй вызов функции create

    $creandoPost->imagen=$nombreimagen;
   $creadonPost->save();
  

$creadonPost из первого create содержит ссылку на операцию вставки, которой можно манипулировать. вы даже можете получить идентификатор вставки из этой переменной следующим образом

       $creadonPost->id