Неправильная запись в моей базе данных обновляется - PullRequest
0 голосов
/ 20 декабря 2018

я использую laravel eloquent для обновления записи в таблице базы данных.Я передаю параметр 52, который является идентификатором записи, которую я хочу обновить (первичный ключ).

Я печатаю запрос, чтобы проверить, какая запись находит его, и печатает ли запись с идентификатором 13и затем, когда я проверяю таблицу, идентификатор 13 был обновлен.

protected $connection = 'sqlsrv';
protected $table = 'todo';

public $timestamps = false;

public static function complete($todoId, $userId)
{
    $now = new DateTime();

    $query = Self::join('todoTypes', 'todo.typeId', 'todoTypes.id')
                 ->where('todoTypes.canComplete', 1)
                 ->whereNull('todo.completedDate')
                 ->find(52);

    $query->where(function ($query) use ($now)
    {
       $query->whereNull('cancelDate')
             ->orWhere('cancelDate', '>', $now);
    });

    if ($query)
    {
        $query->completedDate = $now;
        $query->save();
    }
}

Ответы [ 2 ]

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

Мне удалось это исправить, просто добавив select в начале

select('todo.id', 'todo.completedDate')

Кажется, он получал правильную строку, но отображал id как что-то еще.Когда я вынул соединение и пункт где присоединяются, это сработало.Я подозреваю, что он использовал идентификатор строки соединения из таблицы todoTypes, как это было 13.

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

Как насчет такой попытки?

Запрос после использования find не имеет никакого смысла, так как find возвращает первый объект, а не экземпляр построителя запросов.

public static function complete($todoId, $userId)
{
    $now = new DateTime();

    $object = Self::join('todoTypes', 'todo.typeId', 'todoTypes.id')
        ->where('todoTypes.canComplete', 1)
        ->whereNull('todo.completedDate')
        ->where(function ($query) use ($now) {
            $query->whereNull('cancelDate')
                ->orWhere('cancelDate', '>', $now);
        })->find(52);

    if ($object) {
        $object->completedDate = $now;
        $object->save();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...