This episode is for members only

Sign up to access "Build an E-Commerce Platform" right now.

Get started
Already a member? Sign in to continue
Playing
32. Hooking up products to categories

Episodes

0%
Your progress
  • Total: 8h 42m
  • Played: 0m
  • Remaining: 8h 42m
Join or sign in to track your progress
01. Introduction and demo
9m 42s
0%
02. Installing Laravel, Breeze and Livewire
4m 47s
0%
03. Creating categories
9m 4s
0%
04. Recursively displaying categories
8m 21s
0%
05. Product model and migration
2m 50s
0%
06. Showing a product
7m 50s
0%
07. Product variation setup
10m 26s
0%
08. Creating the product selector
10m 34s
0%
09. Loading child variation dropdowns
4m 28s
0%
10. Faking adding the final variation
9m 33s
0%
11. Setting up product stock
4m 34s
0%
12. Calculating variation stock levels
9m 1s
0%
13. Adding product images with MediaLibrary
8m 50s
0%
14. Creating the product gallery
7m 28s
0%
15. Providing a fallback image
2m 56s
0%
16. Adding media to product variations
3m 37s
0%
17. Creating the cart model
3m 37s
0%
18. Registering the cart service
6m 34s
0%
19. Creating a cart session
11m 4s
0%
20. Showing the cart in the navigation
9m 19s
0%
21. Caching the cart instance
3m 2s
0%
22. Adding items to the cart
14m 1s
0%
23. Creating the notification component
8m 5s
0%
24. Showing the user's cart
6m 50s
0%
25. Outputting cart items
4m 50s
0%
26. Showing variation specifics
8m 8s
0%
27. Updating item quantity
8m 2s
0%
28. Removing an item from the cart
6m 1s
0%
29. Calculating the cart summary
8m 7s
0%
30. Showing the category products page
5m 1s
0%
31. Indexing products in Meilisearch
8m 32s
0%
32. Hooking up products to categories
4m 15s
0%
33. Building the product browser
13m 32s
0%
34. Showing child categories
1m 51s
0%
35. Indexing product variations for filtering
8m
0%
36. Outputting variations for filtering
12m 52s
0%
37. Hooking up product filters with Livewire
7m 48s
0%
38. Filtering products
12m 24s
0%
39. Filtering by price
9m 50s
0%
40. Adding global navigation search
7m 50s
0%
41. Handling products that are not live
3m 22s
0%
42. Price range category fix
1m 18s
0%
43. Scaffolding the checkout page
8m 6s
0%
44. Listing shipping options
9m 3s
0%
45. Calculating the cart totals
2m 52s
0%
46. Validating the account form
9m 10s
0%
47. Validating the shipping form
5m 47s
0%
48. Saving the shipping address
8m 4s
0%
49. Selecting a saved shipping address
6m 39s
0%
50. Fix shipping address error for non authenticated users
1m 7s
0%
51. Redirecting if the cart is empty
2m 42s
0%
52. Checking for quantity changes
7m 11s
0%
53. Syncing if quantities have changed
11m 59s
0%
54. Flashing a message when quantities have changed
5m 48s
0%
55. Setting up for orders
5m 17s
0%
56. Creating an order
13m 24s
0%
57. Attaching variations to order
6m 13s
0%
58. Reducing stock after ordering
2m 56s
0%
59. Meilisearch filter query fix
1m 33s
0%
60. Showing the order confirmation page
7m 39s
0%
61. Attaching orders for registering guest users
5m 17s
0%
62. Scaffolding the orders page
5m 30s
0%
63. Filling in order variation details
5m 24s
0%
64. Returning the order status
4m 39s
0%
65. Detecting order status changes
10m 49s
0%
66. Sending the order status change email
5m 12s
0%
67. Sending an order confirmation email
2m 47s
0%
68. Handling deleted cart records
4m 44s
0%
69. Transferring the guest cart
2m 44s
0%
70. Creating a presenter for the order status
4m 31s
0%
71. Setting up Stripe
3m 43s
0%
72. Creating and updating a PaymentIntent
16m 21s
0%
73. The Stripe card form
3m 35s
0%
74. Validating before payment
5m 34s
0%
75. Submitting a payment
6m 40s
0%
76. Checking for a successful payment
5m 47s
0%
77. Handling Stripe client errors
3m 11s
0%
78. Entangling Stripe customer data
2m 18s
0%

Transcript

00:00
So as we discovered in the last episode we don't actually have products attached to categories which obviously doesn't make any sense. We're going to need to do that so when we click on
00:09
Nike for example we see all of the products that have been attached to that category. So this will be very quick but then we can move on with the rest of our product browser. So we're going to go ahead and create out a migration just a migration on its own and this is going to be to hook up the categories to the products with the belongs to many
00:27
relationship. So we're going to start with the category and then say product the reason being is that just C comes before P in the alphabet and Laravel will use this convention by default. So create category product table and that should be everything we need. We just want to prefix that with create so Laravel builds out everything we need. Okay so let's go over to create category
00:51
product table and let's fill this in. It's going to be very very simple we're just going to need in here a category id and we'll use foreign id for this so everything gets hooked up for us so category id and we'll constrain this and we also need a product id. Now the reason that this pivot table is important is because multiple products could be in multiple categories
01:13
you don't just want to come over to your database and say that a particular product is within a certain category otherwise you would have to duplicate products it doesn't make sense. So let's go ahead and run php artisan migrate and let's go over and start to hook some of these up. So let's say that we want Nike to be in a couple of categories we'll start with that and we'll add
01:35
some more later so Nike is obviously going to go in the night category so let's go and select Nike here we don't really need to create it out and update it up but we'll go ahead and fill it anyway and let's go ahead and put that same product that Nike shoe in Nike new in kind of makes sense there we go so they are the same product but in two different categories. Okay so in terms of the
01:58
relationship let's go over to the category model to start with and we'll go ahead and create out this product relationship so that is belongs to many and product so that will go ahead and pull out any of the products in that particular category and we can do the reverse which we were trying to do in the last episode over in the product model and we'll just create this down here
02:24
and we'll say categories so that will give us all of the categories that that particular product is in and once again we just use the same belongs to many relationship but this time we give the category model in there and again let's just make sure we pull the namespace in for that and that doesn't look like it's working probably because we've already defined the relationship
02:44
just here in the last episode so we'll leave that just up there okay so now that we've done that we can actually fix our two searchable array method and we can include them categories in there so let's do that now let's say category ids we'll go ahead and we will pluck out the categories relationship but we'll pull that back as a collection and then we'll just go ahead and
03:05
say pluck id because that's really all we need we just need some sort of identifier for each of the category ids and this will obviously give us back an array so that will be absolutely fine we can even cast that to an array just there just to be explicit okay so let's open this up and rerun flush and import and let's head over to melisarch and there we go we can see that that
03:30
nike product is in categories three and six now the reason that this is important let's get to that now is that when we come over here and we build out our product browser our product browser is going to make an immediate request to melisarch so what we're going to need to do is when we pull in the products that we want to show say under category nike what we can do is do a quick look
03:54
up inside of melisarch and say well what category does nike belong in and we can pull in only them products that belong to them category ids so we can just do a simple search to grab that out if that doesn't make sense now it will do when we get to our product browser which we are going to scaffold out in the next episode
78 episodes8 hrs 42 mins

Overview

Build a robust e-commerce platform with a Laravel and Livewire. Features products with unlimited and flexible variations, a product browser with filters and price range slider, global product search, guest checkout, shipping and payment implementation, order status tracking and more.

Alex Garrett-Smith
Alex Garrett-Smith
Hey, I'm the founder of Codecourse!

Episode discussion

No comments, yet. Be the first!