Проблемы с попыткой использовать Update и Create в одной функции

Я хочу создать строку для одной таблицы, но обновить столбец в другой таблице, для этого я использую и update(), и create(), но она продолжает заканчиваться одной и той же ошибкой, независимо от того, как я ее записываю.

Проблемы с попыткой использовать Update и Create в одной функции

    public function createuserinfo(Request $request)
    {
        $user = Auth::user();

        $userupdate = User::update([
            'status' => '1'
        ]);

        $infocreate = Personal::create([
            'user_id' => Auth::user()->id,
            'first_name' => $request->first_name,
            'last_name' => $request->last_name,
            'email' => $request->email,
            'password' => $request->password,
            'address' => $request->address,
            'zipcode' => $request->zipcode,
            'city' => $request->city,
            'phone_number' => $request->phone_number,
            'ss_number' => $request->ss_number,
            'document_number' => $request->document_number,
            'license_number' => $request->license_number,
            'expiration_date' => $request->expiration_date,
            'employer' => $request->employer,
            'jobtitle' => $request->jobtitle,
            'contract' => $request->contract,
            'start_date' => $request->start_date,
            'general_practitioner' => $request->general_practitioner,
            'dentist' => $request->dentist,
            'health_insurance' => $request->health_insurance,
            'contact_one_name' => $request->contact_one_name,
            'contact_one_relation' => $request->contact_one_relation,
            'contact_one_address' => $request->contact_one_address,
            'contact_one_zipcode' => $request->contact_one_zipcode,
            'contact_one_city' => $request->contact_one_city,
            'contact_one_phone_number' => $request->contact_one_phone_number,
            'contact_two_name' => $request->contact_two_name,
            'contact_two_relation' => $request->contact_two_relation,
            'contact_two_address' => $request->contact_two_address,
            'contact_two_zipcode' => $request->contact_two_zipcode,
            'contact_two_city' => $request->contact_two_city,
            'contact_two_phone_number' => $request->contact_two_phone_number
        ]);

        return $userupdate . $infocreate . redirect()->route('users.details');
    }

Мне нужно, чтобы он перенаправлял на страницу сведений о пользователе и добавлял/изменял их информацию. Я надеюсь, что кто-то сможет помочь мне с этой проблемой.

Ссылка не работает, слабина ограничивает доступ.

thisiskelvin 21.05.2019 15:06

Кроме того, какую ошибку вы получаете?

thisiskelvin 21.05.2019 15:06

Дайте нам свои учетные данные, чтобы проверить ошибку;)

Rahul 21.05.2019 15:07
Стоит ли изучать 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-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
0
3
48
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Вы пытаетесь обновить пользователя, не передавая его идентификатор, что наверняка приведет к ошибке.

Попробуй это:

public function createuserinfo(Request $request)
{ 
 $user = Auth::user();

 $userupdate = User::find($user->id);
 $userupdate->status = '1';
 $userupdate->save();

 $infocreate = Personal::create([
        'user_id' => $user->id,
        'first_name' => $request->first_name,
        'last_name' => $request->last_name,
        'email' => $request->email,
        'password' => $request->password,
        'address' => $request->address,
        'zipcode' => $request->zipcode,
        'city' => $request->city,
        'phone_number' => $request->phone_number,
        'ss_number' => $request->ss_number,
        'document_number' => $request->document_number,
        'license_number' => $request->license_number,
        'expiration_date' => $request->expiration_date,
        'employer' => $request->employer,
        'jobtitle' => $request->jobtitle,
        'contract' => $request->contract,
        'start_date' => $request->start_date,
        'general_practitioner' => $request->general_practitioner,
        'dentist' => $request->dentist,
        'health_insurance' => $request->health_insurance,
        'contact_one_name' => $request->contact_one_name,
        'contact_one_relation' => $request->contact_one_relation,
        'contact_one_address' => $request->contact_one_address,
        'contact_one_zipcode' => $request->contact_one_zipcode,
        'contact_one_city' => $request->contact_one_city,
        'contact_one_phone_number' => $request->contact_one_phone_number,
        'contact_two_name' => $request->contact_two_name,
        'contact_two_relation' => $request->contact_two_relation,
        'contact_two_address' => $request->contact_two_address,
        'contact_two_zipcode' => $request->contact_two_zipcode,
        'contact_two_city' => $request->contact_two_city,
        'contact_two_phone_number' => $request->contact_two_phone_number
    ]);

    return $userupdate . $infocreate . redirect()->route('users.details');
}
Ответ принят как подходящий

Может быть, попробовать это

  public function createuserinfo(Request $request)
{
    $user = Auth::user();

    $userupdate = $user->update([
        'status' => '1'
    ]);

    $infocreate = Personal::create([
        'user_id' => $user->id,
        'first_name' => $request->first_name,
        'last_name' => $request->last_name,
        'email' => $request->email,
        'password' => $request->password,
        'address' => $request->address,
        'zipcode' => $request->zipcode,
        'city' => $request->city,
        'phone_number' => $request->phone_number,
        'ss_number' => $request->ss_number,
        'document_number' => $request->document_number,
        'license_number' => $request->license_number,
        'expiration_date' => $request->expiration_date,
        'employer' => $request->employer,
        'jobtitle' => $request->jobtitle,
        'contract' => $request->contract,
        'start_date' => $request->start_date,
        'general_practitioner' => $request->general_practitioner,
        'dentist' => $request->dentist,
        'health_insurance' => $request->health_insurance,
        'contact_one_name' => $request->contact_one_name,
        'contact_one_relation' => $request->contact_one_relation,
        'contact_one_address' => $request->contact_one_address,
        'contact_one_zipcode' => $request->contact_one_zipcode,
        'contact_one_city' => $request->contact_one_city,
        'contact_one_phone_number' => $request->contact_one_phone_number,
        'contact_two_name' => $request->contact_two_name,
        'contact_two_relation' => $request->contact_two_relation,
        'contact_two_address' => $request->contact_two_address,
        'contact_two_zipcode' => $request->contact_two_zipcode,
        'contact_two_city' => $request->contact_two_city,
        'contact_two_phone_number' => $request->contact_two_phone_number
    ]);

    return $userupdate . $infocreate . redirect()->route('users.details');
}

Вместо static вызова User модели используйте тот же объект.

    $user = Auth::user();
    $updateUser = $user->update('status' => '1']);

Также вы можете использовать метод save.

    $user = Auth::user();
    $user->status = '1';
    $user->save();

Ссылка Красноречивый ORM

У вас есть функция laravel для этого createOrUpdate(). И если вы обновляете строку с помощью update(), вам нужно указать, что вы обновляете.

Вы хотите обновить пользователя с помощью User::update(), но Модель не знает, какой пользователь, если вы это сделаете

User::find(1)->update() or User::where('name', 'test')->update() 

оно бы знало.

или в вашем случае

$user = Auth::user();

 $user->update([
    'status' => '1'
 ]);

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