Обновите поля, используя foreach в Laravel PHP - PullRequest
0 голосов
/ 05 ноября 2019

Я пытаюсь обновить несколько строк на основе уникального поля taskCode

и обновлю поле taskWeight из tbl_projtask

У меня есть эта 2 переменная

  1. $request->dataWeight Эта переменная исходит из запроса ajax, который содержит что-то вроде этого 95,75,65 значение, разделенное запятыми.

  2. $request->dataWeightAttr Эта переменная исходит из запроса AJAX, который содержит что-то вроде этого TaskCode1, TaskCode2, TaskCode3

В моем MainController.php

У меня есть этот код

    $myString = $request->dataWeightAttr;
        foreach($myString as $value){
            DB::table('tbl_projtask')
            ->where('taskCode', $value)
            ->update([
            'taskWeight'=> $request->dataWeight,
            'by_id'=> auth()->user()->id,
            'updated_by'=> auth()->user()->name,
            'updated_at' => now()
            ]);
        }

Как вы можете видеть в моем update коде

Я использовал request->dataWeightAttr, чтобы найти, какие строки должны быть обновлены, и $request->dataWeight значение для конкретного taskCode

Яделает это правильно?

Ответы [ 2 ]

1 голос
/ 05 ноября 2019

Преобразовать вашу строку в массив

$dataWeight = explode(',',$request->dataWeight); // convert to array
$dataWeightAttr = explode(',',$request->dataWeightAttr); // convert to array 

Предполагая, что у вас есть связанные значения в обоих массивах.

foreach($dataWeightAttr as $key => $value){
    DB::table('tbl_projtask')
    ->where('taskCode', $value)
    ->update([
    'taskWeight'=> $dataWeight[$key],
    'by_id'=> auth()->user()->id,
    'updated_by'=> auth()->user()->name,
    'updated_at' => now()
    ]);
}
1 голос
/ 05 ноября 2019

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

 DB::table('tbl_projtask')
  ->whereIn('taskCode', $request->dataWeightAttr)
  ->update([
     'taskWeight'=> $request->dataWeight,
     'by_id'=> auth()->user()->id,
     'updated_by'=> auth()->user()->name,
     'updated_at' => now()
 ]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...