I need serious relationship advice.

This is messy but I’d appreciate if people kept rude or “smart ass” answers to themselves. My partner and I have been together for almost 5 years. We have a almost year old daughter. I love him with everything in me but it’s getting too much to handle and I’m not sure if I should keep trying or not. Firstly, his mom hates me. She talks so much crap about me to his family. She even talks about me to my boyfriend but he doesn’t defend me. I’ve had to stand up for myself ( which isn’t an issue) but I just think he should have my back and I feel like he doesn’t. Me and her used to be okay but since I had our daughter she started to be awful toward me. I feel super taken for granted. My boyfriend didn’t have anything going for him before me and I helped him get his job, a house, a car, everything. But he’s mean to me. He had an attitude toward me everyday. I feel like he only acknowledges me when he wants to have sex. Sometimes he’s so into his phone he doesn’t even notice im talking to him. He leaves a mess in the house and I’m left to clean it up. I’m a full time student, a full time stay at home mom (online school) and I do the house chores for the most part. A few days ago he blew up on me. Screaming at me telling me “fuck you” “I wish you were different” “take me to my parents” calling me names, idk honestly I started to zone out after a minute. He blamed it on the drinking bc he had been drinking. He’s tried to be super nice to me since then and has apologized a lot. We also have so much trouble saving money because he spends on stupid things. We have 0 dollars saved up. I have to hide money sometimes to put away for our daughter. I know he has so much potential and I’m only telling you the bad so he seems like a piece of shit but he’s also an insanely hard worker for us, when he’s not bad he’s perfect. Sometimes he just gets in these funks like this. Idk how much I can handle. I don’t want my daughter growing up in an environment like this. Idk if I should give him another chance or be done.