Как установить значение столбца на основе идентификатора той же строки? - PullRequest
1 голос
/ 29 марта 2020

У меня есть таблица базы данных, которая выглядит следующим образом:

enter image description here

Я хочу ввести имя и четность (ODD или EVEN). Например:

На моем первом входе с идентификатором 1, четность поля автоматически должна быть ODD. На следующем входе и поле четности должно автоматически появиться EVEN. Мой вопрос заключается в том, как написать код в контроллер, чтобы заставить его работать?

Это мой контроллер:

    $usertest = new UserTest;
    $usertest->name = $request->name;
    $usertest->parity = 'ODD' or 'EVEN';
    $usertest->save();

Я не знаю, как реализовать автоматический ввод c в четность поля (ODD или EVEN) на основе идентификатора.

Заранее благодарим тех, кто отвечает на этот вопрос.

Ответы [ 3 ]

3 голосов
/ 29 марта 2020

По моему мнению, нет необходимости сохранять «нечетные» или «четные» в базе данных, вы можете сделать это в самом view.

в представлении (view.blade . php)

@foreach ($users as $key => $user)
        @if ($key % 2 == 0)
        // is even
        @else
        // is odd
        @endif 
    @endforeach

Или, как сказал @Sarvil Ajwaliya, вы можете попробовать проверить последний идентификатор и добавить или даже основываясь на этом,

    $prevId = UserTest::latest()->first()->id;
    $usertest = new UserTest;
    $usertest->name = $request->name;
    if( $prevId != null) {
    $prevId++;
    $usertest->parity = ($prevId % 2 == 0) ? 'EVEN' : 'ODD';
    }else{
     //If there's no rows it will return null, so this case is only for first row where id will 1 which is 'ODD'
     $usertest->parity = 'ODD'
    }
    $usertest->save();
0 голосов
/ 29 марта 2020

Вам нужно сначала сохранить свой UserTest объект, а затем после получения идентификатора. С помощью этого идентификатора вы можете обновить это поле, если четность четная или нечетная.

Попробуйте, как показано ниже.

$usertest = new UserTest;
$usertest->name = $request->name;
$usertest->save();


UserTest::find($usertest->id)->update(['parity' => ($usertest->id % 2 == 0) ? 'EVEN' : 'ODD']);

Примечание: Убедитесь, что значение поля вашей четности по умолчанию установлено является нулевым.

0 голосов
/ 29 марта 2020

Сначала вы получаете последний вставленный идентификатор и рисуете его на 1, а также проверяете, является ли увеличенный идентификатор ODD или ДАЖЕ, исходя из того, что вы можете вставить данные:

$lastId = DB::table('UserTest')->latest('id')->first(); // i.e $lastId = 10
$lastId++; // i.e $lastId = 11

// check if $lastID (i.e 11) for the ODD or EVEN
$usertest->name = $request->name;
$usertest->parity = ($lastId % 2 == 0) ? 'EVEN' : 'ODD';
$usertest->save();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...