Как получить общую сумму количества и отправить на другой стол (Laravel) - PullRequest
0 голосов
/ 03 декабря 2018

Я хочу получить общую сумму количества в таблице feeds, выбрав столбцы type и cycle_id в таблице.После этого таблица inventory получит сумму и сохранит.

FeedController.php

public function store(Request $request)
{
      //validate
      $this->validate($request, array(
          'date_input' => 'required|date',
          'delivery_number' => 'required|numeric',
          'type' => 'required|max:255',
          'quantity' => 'required|numeric'
      ));
      $input= Carbon::parse($request->get('date_input'));
      $cycle = Cycle::where('date_of_loading','<=',$input)
                     ->where('date_of_harvest','>=',$input)
                     ->first();

    return Feed::create([
        'date_input' => request('date_input'),
        'delivery_number' => request('delivery_number'),
        'type' => request('type'),
        'quantity' => request('quantity'),
        'cycle_id'     => $cycle->id ?? 0,
        'user_id'     => Auth::id()
    ]);
}

Используя type и cycle_id,пользователь получит общее количество и отправит его в таблицу inventory.

   $overall_quantity = Feed::where('cycle_id' '=' $cycle->id ?? 0)
                           ->where('type' '=' $request->get('type'))
                           ->sum('quantity');

Если общее количество не существует в таблице inventory, он создаст новый столбец и, если общееколичество, которое будет добавлено к существующему общему количеству.

инвентарная таблица

$table->increments('id');
$table->string('type');
$table->integer('overall_quantity);
$table->unsignedInteger('cycle_id');
$table->unsignedInteger('user_id');

Можете ли вы мне помочь?спасибо

1 Ответ

0 голосов
/ 03 декабря 2018

Для создания или обновления записи используйте метод Laravel firstOrNew, например:

Feed::firstOrNew([

Чтобы получить сумму type и cycle_id:

$sum = request('type') + $cycle->id;

Создать ИЛИ обновить запись в Inventory таблице:

$createOrUpdateInventory = Inventory::firstOrNew([ 
                                // Your array data to create/update
                           ]);

quantity в feed таблице:

$createNewFeed = Feed::create([ 
                  // Your array data you want to create
                 ]);

ИЗМЕНИТЬ на ваш вопросотредактировано:

Получить количество из инвентаря или создать его, если оно не существует ...

$inventory = Inventory::firstOrCreate(['overall_quantity' => $overall_quantity], ['type' => request('type'), 'cycle_id' => $cycle->id]);

Для получения дополнительной информации: https://laravel.com/docs/5.5/eloquent#inserting-and-updating-models

Дайте мне знать, если это работает для вас!

...