19:10 auth()-user() Object - use $request->user() as it's already injected to controller methods - using auth()->user() three times means instantiating Auth three times. Using variable makes more sense here.
also that variable is just a ref to a User Object, so calling 3 times auth()->user() jus increases call stack and returning the same object 3 times :/ Additional var will be just a link in memory :)
@@martomystery as far as I know - $request->user() just returns User ref that was injected by constructor while building request object. auth()->user() is always calling Gate - resolving user. But I can be wrong, and $request->user() does the same :D
Too bad the application isn’t translated, that’s the minimum I would have done before asking someone to review something on TH-cam. Thanks again for sharing your content Povilas!
@@alila3883 Nice 👍 One small thing though: the text “English” in your dropdown shouldn’t be translated since non-Arabic readers won’t find the button otherwise 😂
As always thank you for the video. Two things I have to mention. First one will be small information. 1. Its an arabic website (because you said that you don't know the language). 2. Using of a variable instead of calling same function repeatedly in many places. You refactored the code $user = auth()->user(); to just auth()->user() in 3 places. So if the developer want some other functions in the future he have to change that function in all the 3 places. In this kind of situation, I will do like the developer did. So I have update the function in only one place. I will go with your suggestion if I have to call the auth()->user() in only one place/code block. Just sharing the thoughts.
I think updatePassword method can be more refactored in the last part of video by creating a new rule for password comparing and moving the code to the new validation rule...
what do you guys think about the response layer to be added to this? in controller to massage the data you want but at the and you return new UserShowResponse($user) for example, and in it you put the things you think "i need this in controller but i dont want it to have this junk" like... idk format_number(), $user->map(), $user->avatar->getFullUrl() or similar.... at the end controller is much cleaner but there are a lot of response classes
There are many tutorials that explain how to use Laravel and Vue/React in the same project with Passport/Sanctum. Does anyone know a good tutorial where the Api and front end(framework) are divided? preferably a tutorial with Laravel 8 - passport authentication and as front end Vue/React. Thx!
I'm currently in development of VUE SPA + LARAVEL API - two separate projects (frontend on port 80 and backend on port 8000) - what are the downsides and upsides vs a single project? Do you still provide auth bearer?
Api Resources controller are important for apis are we just returned json data in api. In simple way without creating api resources controller. I hope my today question is relevant to video.
Practice, practice, practice. Take projects and learn by practice. Best place to learn is Laracasts, and the official documentation. Also, you may take my courses: laraveldaily.teachable.com
Hey Povilas, your content is always amazing. Just a request for a video, if you haven't done it before and if it's possible. Is it possible to make a video on how to fetch Livewire data like Vue.js with lazy loading, For instance in Vue, you can see the HTML elements first and then the data can be hydrated in these respective components as required. In Livewire this is a bit tedious I guess, is there any straightforward way to do lazy loading in Livewire?
I haven't seen anything exactly like that in Livewire, to be honest. But, there's a wire:loading where you can show another div while data is loading. It kinda achieves the same experience?
I believe what you are looking for is Livewire Defer Loading (Cant post links as youtube just deleted another commend I posted here, so google it). There is a official documentation about it.
Thanks a lot for the reply Povilas and Lucas. Actually wire:loading is more of when you the component is already rendered and actions there after can me done with wire:loading. Thanks Lucas, I can understand, TH-cam does that sometimes. I will have a look into it. One work around I tried was something like this. in User.php (component.php) public function mount($ids){ $this->ids = $ids; } public function fetchUsers(){ $this->users = User::whereIn('id', $this->ids)->get(); } public function render(){ return view('user.blade.php') } in user.blade.php (component.blade.php) window.addEventListener('DOMContentLoaded', ()=>{ @this.fetchUsers() } )
It's a personal preference and habit. JWT sounds to me like "the old way" of doing things, which existed before both Passport/Sanctum. So if it works for you, it's cool, but for those who started with Sanctum, I guess they stay with Sanctum. Same as Passport.
JWT is actually a token format (an open standard). Passport and Sanctum could have used JWT tokens instead of simple tokens. Some implementations of Oaut 2.0 will actually use JWT as a bearer token. JWT is usefull when you don't want to record a token in the database. Imagine a Laravel backend for a mobile app. If the app gets really popular you could end up with millions of tokens in the database. Searching and maintaining those tokens can be a lot of work. So, instead of attaching token to a user and saving it in DB, you record user's info (usually user id) in the token and send it back to your mobile app. When app uses this token to authenticate, your backend will decrypt it, make sure it is not expired and will find a user in DB from the user id passed in the token.
19:10 auth()-user() Object
- use $request->user() as it's already injected to controller methods
- using auth()->user() three times means instantiating Auth three times. Using variable makes more sense here.
also that variable is just a ref to a User Object, so calling 3 times auth()->user() jus increases call stack and returning the same object 3 times :/
Additional var will be just a link in memory :)
@@ВладиславГайсюк-ъ7ц does this mean you don't agree with using $request()->user() 3 times either?
@@martomystery as far as I know - $request->user() just returns User ref that was injected by constructor while building request object. auth()->user() is always calling Gate - resolving user. But I can be wrong, and $request->user() does the same :D
Too bad the application isn’t translated, that’s the minimum I would have done before asking someone to review something on TH-cam.
Thanks again for sharing your content Povilas!
Now, It's in English and Arabic languages
github.com/alijumaan/Laravel-Vue-SPA
@@alila3883 Nice 👍
One small thing though: the text “English” in your dropdown shouldn’t be translated since non-Arabic readers won’t find the button otherwise 😂
@@J87NL 🤣🤣
As always thank you for the video. Two things I have to mention. First one will be small information.
1. Its an arabic website (because you said that you don't know the language).
2. Using of a variable instead of calling same function repeatedly in many places.
You refactored the code $user = auth()->user(); to just auth()->user() in 3 places. So if the developer want some other functions in the future he have to change that function in all the 3 places. In this kind of situation, I will do like the developer did. So I have update the function in only one place. I will go with your suggestion if I have to call the auth()->user() in only one place/code block.
Just sharing the thoughts.
Tons of learnings here
I think updatePassword method can be more refactored in the last part of video by creating a new rule for password comparing and moving the code to the new validation rule...
15:49 Eloquent: Don't Load Too Much Data
- Extinguisher::distinct('type')->pluck... is correct Eloquent way to get distinct values
how about Extinguisher::distinct()->pluck('type') ?? wouldn't that work also? is there a difference?
@@biscaynestudd you're right, distinct()->pluck('type') works perfectly fine here.
I had no clue about accessors and mutators! thanks
what do you guys think about the response layer to be added to this? in controller to massage the data you want but at the and you return new UserShowResponse($user) for example, and in it you put the things you think "i need this in controller but i dont want it to have this junk" like... idk format_number(), $user->map(), $user->avatar->getFullUrl() or similar.... at the end controller is much cleaner but there are a lot of response classes
There are many tutorials that explain how to use Laravel and Vue/React in the same project with Passport/Sanctum. Does anyone know a good tutorial where the Api and front end(framework) are divided? preferably a tutorial with Laravel 8 - passport authentication and as front end Vue/React. Thx!
search decoupled laravel and vue
I'm currently in development of VUE SPA + LARAVEL API - two separate projects (frontend on port 80 and backend on port 8000) - what are the downsides and upsides vs a single project? Do you still provide auth bearer?
Thank you for this great video! Do you also have a review comparing Laravel Sanctum, Passport and Tymon-JWT?
No, I don't have direct comparison. But, by default, I recommend Sanctum to everyone now, it's the most simple.
@@LaravelDaily I haven't tried sanctum yet. Currently I am still using tymons JWT for SPAs. Thanks for the responses!
in 18:00 where he used save() instead of create() is because the table might not have timestamp columns? which produce errors.
yap that can be another case as well
@@SinghatehAlagie create can also have no timestamps if the model has timestamps = false
very helpful
Sidetrack but WOW, it must be hard coding ltr and inserting rtl messages...
Api Resources controller are important for apis are we just returned json data in api. In simple way without creating api resources controller.
I hope my today question is relevant to video.
Hello may i ask you like a laravel pro developer, what is best way to be guru in laravel and the best place to learning?
Practice, practice, practice. Take projects and learn by practice.
Best place to learn is Laracasts, and the official documentation.
Also, you may take my courses: laraveldaily.teachable.com
Hey Povilas, your content is always amazing. Just a request for a video, if you haven't done it before and if it's possible.
Is it possible to make a video on how to fetch Livewire data like Vue.js with lazy loading, For instance in Vue, you can see the HTML elements first and then the data can be hydrated in these respective components as required.
In Livewire this is a bit tedious I guess, is there any straightforward way to do lazy loading in Livewire?
I haven't seen anything exactly like that in Livewire, to be honest.
But, there's a wire:loading where you can show another div while data is loading. It kinda achieves the same experience?
I believe what you are looking for is Livewire Defer Loading (Cant post links as youtube just deleted another commend I posted here, so google it). There is a official documentation about it.
Thanks a lot for the reply Povilas and Lucas.
Actually wire:loading is more of when you the component is already rendered and actions there after can me done with wire:loading.
Thanks Lucas, I can understand, TH-cam does that sometimes. I will have a look into it.
One work around I tried was something like this.
in User.php (component.php)
public function mount($ids){
$this->ids = $ids;
}
public function fetchUsers(){
$this->users = User::whereIn('id', $this->ids)->get();
}
public function render(){
return view('user.blade.php')
}
in user.blade.php (component.blade.php)
window.addEventListener('DOMContentLoaded', ()=>{
@this.fetchUsers()
}
)
What is your opinion on using JWT instead of passport and sanctum?
It's a personal preference and habit. JWT sounds to me like "the old way" of doing things, which existed before both Passport/Sanctum. So if it works for you, it's cool, but for those who started with Sanctum, I guess they stay with Sanctum. Same as Passport.
JWT is actually a token format (an open standard). Passport and Sanctum could have used JWT tokens instead of simple tokens. Some implementations of Oaut 2.0 will actually use JWT as a bearer token.
JWT is usefull when you don't want to record a token in the database. Imagine a Laravel backend for a mobile app. If the app gets really popular you could end up with millions of tokens in the database. Searching and maintaining those tokens can be a lot of work. So, instead of attaching token to a user and saving it in DB, you record user's info (usually user id) in the token and send it back to your mobile app. When app uses this token to authenticate, your backend will decrypt it, make sure it is not expired and will find a user in DB from the user id passed in the token.
im actually interested in this topic as well
Sir can you tell me how do I push my Laravel app to GitHub with database & one more thing is how can I connect with you to ask something about laravel
There’s nothing special for laravel when it comes to pushing a project to GitHub, maybe you need go through a quick Git tutorial
amazing, thanks a lot
Thank you!!!
its arabic :)
It's Arabic language Sir
It's Arabic Language. 😄