Сам код $user = User::updateOrCreate( [ 'id' => $userData -> id, ], [ 'username' => $userData -> username, 'discriminator' => $userData -> discriminator, 'avatar' => $userData -> avatar, 'locale' => $userData -> locale, 'mfa_enabled' => $userData -> mfa_enabled, 'refresh_token' => $accessTokenData -> refresh_token ] ); foreach ($guildData->json() as $guild) { unset($guild['owner']); $guild = Guild::updateOrCreate( [ 'id' => $guild['id'], ], [ 'name' => $guild['name'], 'icon' => $guild['icon'], 'permissions' => $guild['permissions'] & 0X8 , 'permissions_new' => $guild['permissions_new'], ], ); Guild::where('permissions', '=', 0)->delete(); } $userGuild = UserGuild::updateOrCreate( [ 'user_id' => $user['id'], 'guild_id' => $guild['id'] ] ); dd($userGuild); И на выходе я получаю удаленный id. А мне нужно тот который остался после удаления, с permissions равным 8 То есть я удаляю строки permissions который равны 0. Остаются те которые после битовой операции равны 8. И id $guild и $user сохраняю в новую таблицу.
Я не сильно понял что у тебя с премишинами творится , но по идее в перемнной $guild будет последнее значения из foreach ( которое не зависит удалил ты созаднную запись или нет).Думаю , стоит попробовать перед созданием сразу проеверить пермишины и если они подходят , то только тогда использовать updateOrCreate
if($guild->permissions & 0X8) { UserGuild::updateOrCreate( [ 'user_id' => $user['id'], 'guild_id' => $guild['id'] ] ); }