Возврат транзакции Laravel null

Я пытаюсь выполнить запрос с помощью транзакции db. Когда мой метод запускает эти данные времени, правильно вставленные в соответствующую таблицу. Но он возвращает null.

Мой код

    return $result = DB::transaction(function() use ($attributes) {
        $service = $this->service->create($attributes);
        $visibilityAttributes = $attributes['dropdown_option_id'];
        $visibilityAttributes = array_map('intval', $visibilityAttributes);
        $service->visibility()->sync($visibilityAttributes);
    },3);
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
1
0
305
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Если вы хотите вернуть какое-либо значение, попробуйте следующий код:

$result = DB::transaction(function() use ($attributes) {
    $service = $this->service->create($attributes);
    $visibilityAttributes = $attributes['dropdown_option_id'];
    $visibilityAttributes = array_map('intval', $visibilityAttributes);
    $service->visibility()->sync($visibilityAttributes);
    return $service;
},3);
return $result

Зачем назначать переменную $result, когда вы просто возвращаете возврат замыкания?

Jane 13.12.2018 08:45

Попробуйте использовать приведенный ниже код, вернув значение вне функции.

 $result = DB::transaction(function() use ($attributes) {
        $service = $this->service->create($attributes);
        $visibilityAttributes = $attributes['dropdown_option_id'];
        $visibilityAttributes = array_map('intval', $visibilityAttributes);
        $service->visibility()->sync($visibilityAttributes);
    },3);

return $result;
Ответ принят как подходящий

DB::transaction() возвращает все, что возвращает переданное ему замыкание. Поскольку ваше закрытие ничего не возвращает, DB::transaction() вернет null. Вам нужно добавить к закрытию инструкцию return.

return $result = DB::transaction(function() use ($attributes) {
    $service = $this->service->create($attributes);

    $visibilityAttributes = $attributes['dropdown_option_id'];
    $visibilityAttributes = array_map('intval', $visibilityAttributes);
    $service->visibility()->sync($visibilityAttributes);

    // This value will be returned from DB::transaction().
    return $service;
},3);

Другие вопросы по теме