Laravel API+Vue Code Review: 12 Things I've Noticed

Поділитися
Вставка
  • Опубліковано 27 жов 2024

КОМЕНТАРІ • 45

  • @mrengineer4076
    @mrengineer4076 3 роки тому +14

    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.

    • @ВладиславГайсюк-ъ7ц
      @ВладиславГайсюк-ъ7ц 2 роки тому +1

      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
      @martomystery 2 роки тому

      @@ВладиславГайсюк-ъ7ц does this mean you don't agree with using $request()->user() 3 times either?

    • @ВладиславГайсюк-ъ7ц
      @ВладиславГайсюк-ъ7ц 2 роки тому +1

      @@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

  • @ajithlal1688
    @ajithlal1688 3 роки тому +5

    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.

  • @J87NL
    @J87NL 3 роки тому +13

    Too bad the application isn’t translated, that’s the minimum I would have done before asking someone to review something on UA-cam.
    Thanks again for sharing your content Povilas!

    • @alila3883
      @alila3883 3 роки тому +2

      Now, It's in English and Arabic languages
      github.com/alijumaan/Laravel-Vue-SPA

    • @J87NL
      @J87NL 3 роки тому +3

      @@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 😂

    • @alila3883
      @alila3883 3 роки тому

      @@J87NL 🤣🤣

  • @AbrarAhmad-mz8vl
    @AbrarAhmad-mz8vl 3 роки тому +3

    Tons of learnings here

  • @ricko13
    @ricko13 3 роки тому

    I had no clue about accessors and mutators! thanks

  • @kartiksprajapati6006
    @kartiksprajapati6006 3 роки тому +2

    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...

  • @ArjonJasonCastro
    @ArjonJasonCastro 3 роки тому

    Thank you for this great video! Do you also have a review comparing Laravel Sanctum, Passport and Tymon-JWT?

    • @LaravelDaily
      @LaravelDaily  3 роки тому +1

      No, I don't have direct comparison. But, by default, I recommend Sanctum to everyone now, it's the most simple.

    • @ArjonJasonCastro
      @ArjonJasonCastro 3 роки тому

      @@LaravelDaily I haven't tried sanctum yet. Currently I am still using tymons JWT for SPAs. Thanks for the responses!

  • @ryiad2010
    @ryiad2010 2 місяці тому

    very helpful

  • @raimonds.L
    @raimonds.L 3 роки тому

    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?

  • @ejaysjaaki
    @ejaysjaaki 3 роки тому +3

    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!

    • @darkmode404
      @darkmode404 3 роки тому +1

      search decoupled laravel and vue

  • @aleksandarstevanovic5854
    @aleksandarstevanovic5854 3 роки тому

    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

  • @mrengineer4076
    @mrengineer4076 3 роки тому +1

    15:49 Eloquent: Don't Load Too Much Data
    - Extinguisher::distinct('type')->pluck... is correct Eloquent way to get distinct values

    • @biscaynestudd
      @biscaynestudd 3 роки тому +1

      how about Extinguisher::distinct()->pluck('type') ?? wouldn't that work also? is there a difference?

    • @mrengineer4076
      @mrengineer4076 3 роки тому

      ​@@biscaynestudd you're right, distinct()->pluck('type') works perfectly fine here.

  • @mohamednabih6036
    @mohamednabih6036 3 роки тому

    amazing, thanks a lot

  • @thecongvu6383
    @thecongvu6383 3 роки тому

    Thank you!!!

  • @adityakadam2256
    @adityakadam2256 3 роки тому

    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?

    • @LaravelDaily
      @LaravelDaily  3 роки тому

      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?

    • @lucasj.pereira4912
      @lucasj.pereira4912 3 роки тому

      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.

    • @adityakadam2256
      @adityakadam2256 3 роки тому

      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, UA-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()
      }
      )

  • @NotBeHaris
    @NotBeHaris 3 роки тому

    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.

  • @renwar
    @renwar 3 роки тому +1

    in 18:00 where he used save() instead of create() is because the table might not have timestamp columns? which produce errors.

    • @SinghatehAlagie
      @SinghatehAlagie 3 роки тому

      yap that can be another case as well

    • @darkmode404
      @darkmode404 3 роки тому +1

      @@SinghatehAlagie create can also have no timestamps if the model has timestamps = false

  • @dauletsailauov3858
    @dauletsailauov3858 3 роки тому +1

    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?

    • @LaravelDaily
      @LaravelDaily  3 роки тому +6

      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

  • @AjayKumar-mi2mr
    @AjayKumar-mi2mr 3 роки тому

    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

    • @mohamedel-damarawy6595
      @mohamedel-damarawy6595 3 роки тому +2

      There’s nothing special for laravel when it comes to pushing a project to GitHub, maybe you need go through a quick Git tutorial

  • @gram_o_phone
    @gram_o_phone 3 роки тому +1

    Sidetrack but WOW, it must be hard coding ltr and inserting rtl messages...

  • @justtestingmycurrentskills747
    @justtestingmycurrentskills747 3 роки тому

    What is your opinion on using JWT instead of passport and sanctum?

    • @LaravelDaily
      @LaravelDaily  3 роки тому +3

      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.

    • @alexrusin
      @alexrusin 3 роки тому +6

      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.

    • @darkmode404
      @darkmode404 3 роки тому

      im actually interested in this topic as well

  • @Pharaoh-99
    @Pharaoh-99 3 роки тому +2

    its arabic :)

  • @saidbenhmed7884
    @saidbenhmed7884 3 роки тому +2

    It's Arabic language Sir

  • @ShadiMuhammad
    @ShadiMuhammad 3 роки тому +3

    It's Arabic Language. 😄