Вновь созданная запись не появляется при вызове из отношений - PullRequest
0 голосов
/ 11 декабря 2018

У меня есть функция, которая создает новую запись в модели под названием «Включение».Затем я хочу вызвать эту запись через отношение hasOne в пользовательской модели, выполнив auth()->user()->onboarding, однако это возвращает ноль.Ниже приведен фрагмент моей функции, где это происходит:

public function apiSend(StoreOnboarding $request)
    {
        //Update the user's Onboarding details on DB
        $this->store($request);

        //Validate user's onboarding details
        $validation = $this->checkValidation(auth()->user()->onboarding);

}

Функция моего магазина:

public function store(StoreOnboarding $request)
{
    $onboarding = auth()->user()->onboarding()->updateOrCreate($request->validated());
}

Функция моего магазина работает правильно, и новая запись о подключении добавлена ​​воднако в моей функции apiSend я получаю сообщение об ошибке:

"Аргумент 1, передаваемый в App \ Http \ Controllers \ OnboardingController :: checkValidation (), должен быть экземпляром App \ Onboarding,пусто дано ".

Ниже приведен фрагмент моей checkValidation функции:

public function checkValidation(Onboarding $onboarding)
{
    $validator = Validator::make($onboarding->toArray(), [
    //Validation here
    ]);
}

А вот мои входящие отношения в пользовательской модели:

public function onboarding()
{
    return $this->hasOne(Onboarding::class, 'user_id', 'id');
} 

Я не понимаю, почему auth()->user()->onboarding не возвращает вновь созданную входящую запись и вместо этого возвращает ноль?

1 Ответ

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

После нескольких дополнительных исследований я обнаружил, что это можно решить, выполнив

auth()->user()->load('onboarding');

непосредственно перед использованием auth()->user()->onboarding

. Это заставляет отношения обновляться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...