Запрос: Код (Text): Ofs::find($id) ->update([ 'one' => $one, 'two' => $two, ]); Подскажите пожалуйста, как сделать, что если допустим $one равняется существующему значению one в таблице Ofs, то не обновлять это значение...
оно и не будет обновляться, если совпадает с предыдущим ))) --- Добавлено --- реально MySQL отвечает 0 records updated --- Добавлено --- если я тебя не понял, то наверное потому что вопрос так сформулирован.
Да, я тупанул, не тот запрос написал... Код (Text): Ofs::find($id) ->update([ 'one' => Ofs::raw("one + $one"), 'two' => Ofs::raw("two + $two"), ]); Как в этом запросе можно сделать? Если допустим $one равняется существующему значению one в таблице Ofs, то не обновлять это значение...
@Reken ну добавь буквально условие в запрос и замени find() на where(). Тогда ситуация "не найдено таких записей" не будет вызывать ошибку, а просто ничего не будет обновляться. Код (Text): Ofs::where('one', '!=', $one) ->where('id', '=', $id) ->update(...) Есть разница - вызываешь ли ты метод update() у объекта типа Builder или у экземпляра модели. Понимаешь о чём я? методы where...() возвращают объект Builder, их можно цепочкой добавлять один-другой-третий-стопятисотый... метод find() заканчивает эту цепочку и возвращает объект модели (либо null). В любом случае, операции Eloquent порождают запросы SQL. В случае Model::find()->update() это два запроса SELECT * FROM ofd ... UPDATE ofd ... В случае Model::where()->update() объект модели не создаётся, а в базу отправляется только один запрос UPDATE ofd ...