UpdateOrCreate условные данные в качестве входных данных - PullRequest
0 голосов
/ 16 апреля 2020

У меня есть этот код, который приводит к двум запросам.

$profile = $profile_class::updateOrCreate([
        'user_id' => $user->id,
    ], 
    [
        'data' => $profile_data,
]);

if($request->type == 'volontario' && $request->filled('association_id')) {
        $profile->association_id = $request->association_id;
        $profile->association_token = uniqid(md5($user->id));
        $profile->save();
}

Есть ли какой-либо подход для выполнения только одного запроса к БД?

1 Ответ

0 голосов
/ 16 апреля 2020

Вы можете просто изменить данные, которые должны быть обновлены, в зависимости от того, находится ли ваш запрос в правильном состоянии. Чтобы это работало, association_id и association_token должны быть заполнены.

$fillData = [
    'data' => $profile_data,
];

if($request->type == 'volontario' && $request->filled('association_id')) {
    $fillData['association_id'] = $request->association_id;
    $fillData['association_token'] = uniqid(md5($user->id));
}

$profile = $profile_class::updateOrCreate([
        'user_id' => $user->id,
    ],
    $fillData
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...