-- Ask for Clarification --
Use symmetric key encryption opposed to asymmetric (public-key cryptography). This way you only manage one key for both encryption and decryption.
User accounts each have an autogenerated key (PIN Number e.g. 4290) that’s encrypted with their unhashed password. The user password will be stored hashed of course in the database alongside the encrypted autogenerated key. When a user decides they want a specific user to access their data, they will provide their password which will be used to decrypt the autogenerated key (4290). The decrypted autogenerated key (4290) will be given to the requested user to have them store and encrypt the autogenerated key with their own unhashed password which will be stored in association with the user’s account.
Creating a unidirectional bind between the user and requested user, the requested user can access the user’s encrypted data not vice versa unless of course they repeat the process mentioned above with swapped roles.
This method allows a user to safely encrypt and decrypt the data for the authorised users with no exposure of either the user’s password or autogenerated key. You will have to decide though how will users share the autogenerated key amongst each other safely likely in person exchange to keep the decrypted autogenerated key off your database.
You can safely search for users’ data by now decrypting the target user’s data with their account’s autogenerated key. This method will require the requesting user to provide their password every instance of decrypting the autogenerated key. User data can now be searched through securely.
-- This is purely theoretical but makes the most practical sense, this way you won't have to store both a hash and encrypted copy of the same data, if you have a better solution I am genuninely curious ---