Chcę zaktualizować wszystkich użytkowników w mojej bazie danych o wartość wieku, którą otrzymam z mojej prośby. Jak sobie z tym poradzić? W jakiś sposób potrzebuję bieżącej wartości w db i jej wielokrotności.

    DB::table('customers')
        ->update([
            'age' => DB::raw('column1 * 2'),
        ]);
0
iasnion123 20 czerwiec 2021, 13:35

2 odpowiedzi

Najlepsza odpowiedź

Załóżmy, że nazwa field w Twoim $request to multiple, możesz iterate nad swoimi customer rekordami i zaktualizować każdy z nich, stosując multiple wartość na ich age:

// grab the `multiple` value from your request
$multiple = $request->get('multiple');

// get all your customers, loop over them and update each record
Customer::all()->each(function ($customer) use ($multiple) {
    $customer->update(['age' => $customer->age * $multiple]);
});

Jeśli chcesz użyć QueryBuilder zamiast Eloquent, możesz wykonać następujące czynności:

DB::table('customers')->get()->each(function ($customer) use ($multiple) {
    DB::table('customers')
        ->where('id', $customer->id)
        ->update(['age' => $customer->age * $multiple]);
});
0
Peppermintology 20 czerwiec 2021, 11:34

Może chcesz zaktualizować kolumnę na podstawie wartości jako danych wejściowych dostarczonych przez użytkownika.

Zauważ też, że użyłem podwójnego cytatu.

DB::table('your_table')
->where('some_column', $someValue)
->update(array(
    'column1' => DB::raw("column1 * $your_input_variable")
));
0
Mansoor Ali Soomro 20 czerwiec 2021, 10:55