\ Eloquent \ Model :: Create метод возвращает ноль с кодом состояния OK - PullRequest
0 голосов
/ 25 апреля 2019

Метод создания не работает должным образом. Всегда возвращать статус ОК, с нулевыми данными и без вставки в БД. К сожалению, ошибки не отображаются, поэтому я не знаю, что делать.

protected function addBooking(Request $request)
{

    $data = $request->all();


    if ($this->validator($data)->fails()) {
        return $this->sendError('Validation Error.', $this->validator($data)->errors());
    }

    Booking::create($data);

    return $data;

}

Это миграция

 public function up()
{
    Schema::create('bookings', function (Blueprint $table) {
        $table->bigIncrements('id');
        $table->bigInteger('booker_id')->nullable(false)->unsigned();
        $table->bigInteger('classroom_id')->nullable(false)->unsigned();
        $table->string('name');
        $table->string('color')->default("#ff0000");
        $table->string('file')->default(NULL);
        $table->string('start')->nullable(false);
        $table->string('end')->nullable(false);
        $table->timestamps();
        $table->foreign('booker_id')->references('id')->on('users');
        $table->foreign('classroom_id')->references('id')->on('classrooms');
    });
}

Модель

  class Booking extends Model
    {
    protected $fillable = [
        'booker_id', 'classroom_id', 'name', 'color', 'file', 'start', 'end'
    ];

    protected $hidden = [
    ];

    protected $casts = [
    ];
}

Как мне отправить запрос

{
  "booker_id": 10,
  "classroom_id": 4,
  "name": "Microsoft",
  "start": "2019-04-25 14:45",
  "end": "2019-04-25 16:45",
  "color": "#ff0000",
  "file": "test"
}

Ответы [ 2 ]

0 голосов
/ 25 апреля 2019

Laravel имеет соглашение о маршрутизации, если вы создаете новый элемент, имя метода будет be store (). Я использую два способа создания нового элемента: Сначала это короче, и я добавляю проверку в StoreBooking

public function store( StoreBooking $request ) {
  $data = $request->all();
  $booking = Booking::query()->create( $data );
}

Логер на основе документации Laravel:

public function store( StoreBooking $request ) {
 $booking = new Booking();
 $booking->bookier_id = $request->bookier_id;
 /**
  add other items
 **/
 $booking->save();
}
0 голосов
/ 25 апреля 2019

// Вы должны использовать форму запроса для проверки данных.и перенести всю свою бизнес-логику на модель

protected function addBooking(Request $request)
{

    $data = $request->all();


    if ($this->validator($data)->fails()) {
        return $this->sendError('Validation Error.', $this->validator($data)->errors());
    }

    return Booking::create($data)->fresh();

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...