(Laravel) Как подсчитать столбец целых чисел и отправить в другую таблицу? - PullRequest
0 голосов
/ 03 декабря 2018

Как мне суммировать количество с одинаковыми cycle_id, type и user_id из таблицы feeds, а сумма количества, cycle_id, type и user_id будет передана в таблицу inventories?

feeds таблица

    $table->increments('id');
    $table->date('date_input');
    $table->string('delivery_number');  
    $table->string('type');
    $table->integer('quantity');
    $table->unsignedInteger('cycle_id');  
    $table->unsignedInteger('user_id');
    $table->timestamps();

inventories таблица

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

Сумма количества будет передана в total_quantity.
Тип из таблицы feeds перейдет ктип из таблицы inventories.
Идентификатор цикла из таблицы feeds передается в идентификатор цикла_ из таблицы inventories.
Идентификатор пользователя из таблицы feeds передается в идентификатор пользователя из inventoriesтаблица.

Если запись не существует в таблице инвентаризации, она будет создана, но когда запись существует, например, из таблицы inventories, она добавит.

Это моякод

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();

             $cycle_id =$cycle->id ?? 0;

        $feed = Feed::create([
            'date_input' => request('date_input'),
            'delivery_number' => request('delivery_number'),
            'type' => request('type'),
            'quantity' => request('quantity'),
            'cycle_id'     => $cycle_id,
           'user_id'     => Auth::id()

        ]);

        return $feed;

        $overall_quantity = Feed::where('cycle_id','=',$cycle_id)
                            ->where('type','=',$request->get('type'))
                            ->sum('quantity');

        Inventory::firstOrCreate([
            'overall_quantity' => $overall_quantity, 
            'type' => request('type'), 
            'cycle_id' => $cycle_id,
            ]);
    }

, но он не работает Когда я добавляю данные в таблицу feeds, таблица inventories все еще пуста.


Новая проблема

Моя история фидов

enter image description here

Моя inventories таблица

enter image description here

это должен быть идентификатор 1, будет 144, но он создаст новую запись.Пожалуйста, помогите

1 Ответ

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

Перед тем как выполнить команду Inventory::firstOrCreate([...]) вы вернули $feed.

Просто удалите оператор return.

// return $feed;

$overall_quantity = Feed::where('cycle_id','=',$cycle_id)
                    ->where('type','=',$request->get('type'))
                    ->sum('quantity');

Inventory::firstOrCreate([    
//Add unique field combo to match here
 'type' => request('type'), 
 'cycle_id' => $cycle_id,
],[ 'overall_quantity' => $overall_quantity ]);
...