Я пытаюсь выполнить запрос с помощью транзакции 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);






Если вы хотите вернуть какое-либо значение, попробуйте следующий код:
$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 = 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);
Зачем назначать переменную
$result, когда вы просто возвращаете возврат замыкания?