validate([ 'nama' => 'required|string|max:120', 'email' => 'required|string|lowercase|email|max:191|unique:users,email', 'password' => ['required', 'confirmed', Password::min(8)->letters()->numbers()], 'sekolah_asal' => 'required|string|max:150', 'jenis_kelamin' => 'required|in:L,P', 'no_telepon' => 'required|string|max:30', 'alamat' => 'required|string', ]); // role siswa harus ada (sesuai ketentuan) $roleSiswa = Role::where('nama_role', 'siswa')->firstOrFail(); $roleId = $roleSiswa->role_id ?? $roleSiswa->id; // aman untuk variasi PK roles DB::transaction(function () use ($validated, $roleId) { $user = User::create([ 'role_id' => $roleId, 'nama' => $validated['nama'], 'email' => $validated['email'], 'password_hash' => Hash::make($validated['password']), 'is_active' => true, 'must_change_password' => false, ]); $userPk = $user->user_id ?? $user->id; // aman untuk variasi PK users Siswa::create([ 'user_id' => $userPk, 'sekolah_asal' => $validated['sekolah_asal'], 'jenis_kelamin' => $validated['jenis_kelamin'], 'no_telepon' => $validated['no_telepon'], 'alamat' => $validated['alamat'], ]); }); // Breeze biasanya auto-login setelah register, // tapi kebutuhan Anda: boleh auto-login atau redirect login. return redirect()->route('login')->with('success', 'Registrasi berhasil, silakan login.'); } }