Laravel транзакция возвращает ноль - PullRequest
0 голосов
/ 13 декабря 2018

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

Мой код

    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);

Ответы [ 3 ]

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

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

 $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;
0 голосов
/ 13 декабря 2018

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);
0 голосов
/ 13 декабря 2018

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

$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
...