Тёмный
Przemysław Przyłucki
Przemysław Przyłucki
Przemysław Przyłucki
Подписаться
In-depth Laravel tutorials covering building a SaaS apps using Tailwind and Vue
Launching my secret project...
5:01
Год назад
Feature Flags in Laravel
16:48
Год назад
Комментарии
@MohamedElguarir
@MohamedElguarir 9 дней назад
this is probably why the JS ecosystem always better, the vercel AI SDK is just to good to not use.
@MartinPL
@MartinPL 10 дней назад
Laravel uses "messages" objects with builder pattern not DTOs but that is detail ofc :) Thanks for video
@user-pr5sl7sw8k
@user-pr5sl7sw8k 12 дней назад
extremely like. always as usually constantly %)
@user-pr5sl7sw8k
@user-pr5sl7sw8k 12 дней назад
When I listen to your fluent English, it sounds like you're being electrocuted or sitting on a . Tnnx for explanantion
@TheOfficialIH4xx3R
@TheOfficialIH4xx3R 12 дней назад
wow
@intipontt7490
@intipontt7490 21 день назад
So instead of having a simple controller method that only interacts with a FormRequest and a Model, you've now added complexity with a superfluous Service class and a DTO. It may look cool, but using such a basic examples to try and demonstrate their usefulness is a mistake. public function store(StoreBlogPostRequest $request) { $blogPost = BlogPost::create($request->validated() + ['source' => BlogPostSource::App]); return new JsonResponse(BlogPostResource::make($blogPost), Response::HTTP_CREATED); } public function update(UpdateBlogPostRequest $request, BlogPost $blogPost) { $blogPost->update($request->validated()); return new JsonResponse(BlogPostResource::make($blogPost->fresh()), Response::HTTP_OK); } What should have taken 2-4 lines in 2 methods contained in 1 class became 6 methods inside 3 classes. There is a case to be made for Service classes and DTOs, but this is not one of them.
@ramazanaktas748
@ramazanaktas748 21 день назад
Holy f I was trying to build my own
@PrajwalMaharjan-bc1sp
@PrajwalMaharjan-bc1sp 28 дней назад
how is it different from repository pattern?
@user-ge6pt5lp9u
@user-ge6pt5lp9u Месяц назад
Thnx for approach guide. But could you not speed up the words partially within eat the volume at the end of phrase.. 😅
@harshadevapriyankarabandar5456
@harshadevapriyankarabandar5456 Месяц назад
You have great videos in laravel. keep this up
@harshadevapriyankarabandar5456
@harshadevapriyankarabandar5456 Месяц назад
I think controller and service layer is enough for most of the laravel applications. Hence we are re creating all the method in the repository which is already available in the laravel eloquent model, it seems like a repetitive work without any additional benefit. We can just keep our controller clean and pass the business login to service class , then resolve the function my accessing database via eloquent models and then return the result to controller. in that way we can use the laravel already build eloquent powers easily and quickly.
@muhammadumarsotvoldiev8768
@muhammadumarsotvoldiev8768 Месяц назад
Thank you very much!
@IachimovschiDaniel-p1c
@IachimovschiDaniel-p1c Месяц назад
We wanted you Przemysław Przyłucki ? ?How are you ? why you dony push video ? push video about you , channel please!!!!
@abdulrehman-it7rp
@abdulrehman-it7rp Месяц назад
Plz explain why you are using such complex things pipelines, ___invoke function, Just if condition for fillter , and if it is too mush code put it in traits
@programmertelo
@programmertelo Месяц назад
thanks for the great video
@julendominadas4040
@julendominadas4040 Месяц назад
i have never worked with any php framework before. Its funny to see that back when i started learning php i designed a request handler that seems pretty similar to this piece of laravel.
@B0re_d
@B0re_d Месяц назад
I would add the transformation method to request classes. In my opinion you should not have to extend DTO classes when adding new pieces of code eg. API v2 instead you should have a method called asDto(or toDto) in the request class and call them instead of making X static factory methods. Overall great content :)
@mykola-rohoza
@mykola-rohoza 2 месяца назад
Great tips, but i more like to use different actions as class, not as a part of service. Its easy to extend from basic model to others
@pattystaricha799
@pattystaricha799 2 месяца назад
Any tips for getting this to work with Vue 3?
@josephmakram4342
@josephmakram4342 2 месяца назад
This is awesome, i hope you deep dive on DDD on the next episodes
@mohammadjavadrajabloo2711
@mohammadjavadrajabloo2711 2 месяца назад
Good Video!
@nicolascanala9940
@nicolascanala9940 2 месяца назад
Man you would love C# haha. Thanks for the video!
@dyrossaur
@dyrossaur 2 месяца назад
Use handle() method instead, not the __invoke().
@nicolascanala9940
@nicolascanala9940 2 месяца назад
Hey! How do you approach having different validation rules in the store and update actions? For example, a StoreBlogRequest which marks all fields as required, VS an UpdateBlogRequest which doesn't (for example, you just wanna update the name). Would you create more than one DTO and mark the properties as nullable?
@saaslaravel
@saaslaravel 2 месяца назад
Hey there! It depends on the situation, generally speaking with updates I'd not go with nulls because partial updates are pretty sexy - if you use spatie/laravel-data - they handle it out of the box with Optional type hint
@patricknelson
@patricknelson 2 месяца назад
Hopefully if you're going to be making upstream requests on every page load (or every user login) the developer will be making sure to perform reasonable caching. Since this is Laravel it should be pretty configurable, but something to be conscientious of. Also, presumably the upstream service (e.g. growthbook, in this case) is utilizing standard HTTP cache headers that Guzzle can respect and cache centrally using the configured middleware (e.g. memcached if you're on a cluster or something).
@saaslaravel
@saaslaravel 2 месяца назад
It's been cached in the video I believe. The http call is only made for fetching flags, they are resolved locally. Great piece of advice though!
@3dxspx703
@3dxspx703 2 месяца назад
Yikes. Model mutators and observers will be enough guys. But if you want to Over-engineer your code, then go on with dto or something like repository pattern. 😅
@saaslaravel
@saaslaravel 2 месяца назад
Until your app had 1200 endpoints and some places haven't been touched for years - yeah
@3dxspx703
@3dxspx703 2 месяца назад
@@saaslaravel yeah? But I prefer laravel's defaults for easier maintenance and debugging. Also KISS. Pfft
@LowVi
@LowVi 2 месяца назад
Really good man! I would like to know what you think about adding an extra layer: the repository. Because thats kinda whats going on my in job rn, laravel + service pattern + dto + repository, I feel like the Model itself could act as the Repository, what do you think?
@saaslaravel
@saaslaravel 2 месяца назад
It really depends on what you are looking for from the solution. I'd say - if you don't have a good reason to introduce a repository - don't do it. If you want to have more fine grained control over your persistence layer (i.e to handle CQRS more easily) go for repository!
@Chugouale
@Chugouale 2 месяца назад
Awesome video series. what laravel version is this ?
@saaslaravel
@saaslaravel 2 месяца назад
I believe it was 10
@Pavelbrov
@Pavelbrov 2 месяца назад
17:20 - Shouldn't our DTO have a method like toArray so that we can manually avoid passing all the parameters? I mean, they correspond to the properties of the model. Or is this a bad practice? Like this public function toArray(): array { $properties = get_object_vars($this); $array = []; foreach ($properties as $key => $value) { $snakeCaseKey = Str::snake($key); $array[$snakeCaseKey] = $value; } return $array; } and then BlogPost::create($dto->toArray());
@saaslaravel
@saaslaravel 2 месяца назад
I prefer to be explicit when possible, realistically, just use spatie/laravel-data which handles this out of the box
@Pavelbrov
@Pavelbrov 2 месяца назад
5:50 - what about duplication in BlogPostRequest validation for api and app? Can we get rid of it?
@icantchosemyname
@icantchosemyname 3 месяца назад
I didn’t know about pipeline but i think laravel provides the "when()" method on query builder instances. It’s simple and "eloquent" (pun intended 😂 ) i think but you probably already know about it. Your post seems to be for demonstrating the pipeline tool, thanks.
@HieuNguyenTrung-ud6dj
@HieuNguyenTrung-ud6dj 3 месяца назад
I think we should use RepositoryContract interfaces instead of Repository classes in the constructors of Handler classes.
@saaslaravel
@saaslaravel 2 месяца назад
You're completely right! That was a brain fart on my end!
@niceteg
@niceteg 3 месяца назад
We miss you
@saaslaravel
@saaslaravel 3 месяца назад
I may or may not be getting back soon 👀
@niceteg
@niceteg 3 месяца назад
@@saaslaravel all your your videos are inspiring! Just buil some CRM example with DB structure and it will be the,🚀
@nobodyspecial946
@nobodyspecial946 3 месяца назад
Mordo, if you use AWS there is a native way to integrate it though Event Bridge - almost no code solution and you don't pay for lambda invoke. Trust me mordziu I am an engineer. But well explained, thumb up
@saaslaravel
@saaslaravel 3 месяца назад
Prawdopodobnie najlepszy komentarz jaki kiedykolwiek dostalem, dzieki za rade xd
@LucasOliveira-ny6kw
@LucasOliveira-ny6kw 3 месяца назад
.
@midclock
@midclock 3 месяца назад
Nice tutorial! You can check ide-helper to generate model auto completion for properties. For dtos I find laravel-data by spatie a very good solution. Cheers
@saaslaravel
@saaslaravel 3 месяца назад
Yeah I use both of them in my workflow! Def worth checking out for anybody interested though!
@vovkko
@vovkko 3 месяца назад
you can go further and return dto from custom request method (getDto()) which return dto class, inside that getDto method you can pass validated() as array to dto constructor, and write typed getter methods with default values (via ??) if api or app didnt receive some values from user
@IleniaQuintero
@IleniaQuintero 3 месяца назад
Hello, I was looking at your video channel. We may be helping a company that uses secure images to increase supply chain security and help cloud native development. Would you be willing to help try their software, make a video, and help show devs how to use their tools? This is not an offer, but just to start a conversation about your willingness to take on sponsorship. Please provide me with your email if you are interested. You'd have a chance to look at their technology and decide if it's the type of software that you'd be interested in covering in your channel.
@saaslaravel
@saaslaravel 3 месяца назад
You can find my deets on przemyslawprzylucki.com
@XTishka1980
@XTishka1980 3 месяца назад
Amazing! Thank you for your lessons
@e-raticartist
@e-raticartist 4 месяца назад
huge improvement in the quality of my code after this, next level content
@israeliloba
@israeliloba 4 месяца назад
Am getting something went wrong error
@unknownstalker2624
@unknownstalker2624 4 месяца назад
Man, you are just awesome! Your content really helped me!
@bijayaprasadkuikel5162
@bijayaprasadkuikel5162 4 месяца назад
But why are not you using composition API?
@jirikolapa4292
@jirikolapa4292 4 месяца назад
How do you handle replica lag?
@JSONFX
@JSONFX 4 месяца назад
What font are you using on this video? Thanks!
@99Spyder99
@99Spyder99 4 месяца назад
Can this be implemented with repository pattern? to have for example in EmojiRepository in the function getFilterableEmojis() can we move here the logic with the pipeline to return just $filterable->builder->get() and in the controller to have like return EmojiResource::collection( $emojiRepository->getFilterableEmojis($request) );
@99Spyder99
@99Spyder99 4 месяца назад
Can you please put the code on git after you finish a tutorial?
@VipStudio
@VipStudio 5 месяцев назад
When you have form request class included into ur method you dont need to do $request->validated cuz the data is already validated otherwise it throws validate exception until first line of code starts compile from function
@VipStudio
@VipStudio 5 месяцев назад
And you dont need to use Dto u can just do create($request) //already validated clean data
@AbderrahmanFodili
@AbderrahmanFodili 5 месяцев назад
Amazing stuff. I did sth weird to handle this . I added a helper method that returned an array with the key being the"Exception::class" and the value being either an array or a closure that returns an array as well this array always has a code and a message . this way I managed to also handle Laravel's own exceptions but your way of doing it is the Laravel way through the register method
@haingocduong5145
@haingocduong5145 5 месяцев назад
Eloquent is a Repository . Don't use Repository Pattern if your Repository get data by Eloquent . it's meaningless