php - Laravel many to many relationship using Eloquent - Stack Overflow
You're trying to call AlbumxUserImage() on a Collection of models instead of on each individual model. AlbumxUserImage::all() is returning a Collection of. Many-to-many relationships are defined by writing a method that returns the result of the belongsToMany method. In this tutorial, we will see Laravel Many To Many Relationship Example. Many-to -many relations are slightly more complicated than hasOne.
Eloquent Relationships Cheat Sheet – Hacker Noon
To create a migration file, type the following command. Now, Multiple Categories belongs to Multiple Products. In a real-time scenario, we create a form and then through POST request, we insert the Product data into the table.
However, in this example, we will not define any form, we directly store the data into the database, because our goal is how we can use many to many relationships to the complex scenario. Now, define a route that saves the product into the database as well as assigns the product to the category using many to many relationships.
Now, we have four 4 categories. So, we create a product and assign the two categories to one product.
First, create a ProductController using the following command. Now, I am using GET request for the saving the data because, we have not created the form, so we take every data manually. Also, Now, what we are going to do is that we will create one Product that belongs To Many Categories.
Now, God of War belongs to two categories. Video Games Playstation So, when we create a product, we also need to fill the pivot table with the two categories.
Laravel Many To Many Relationship Example
Since we just need an ID of categories, so right now, I have coded manually, but in real-time, you have those ids in the form request. Each row has a relationship with its product and category. The table will be really simple, we will need an ID, timestamps, and a brew method name. In your migration up method, add the following code: Just to clean up the migration, make sure you have: I seeded the table with the following Insertquery: Create Join Table The join table is where the magic happens for many-to-many relationships.
First we will make another migration so run: You will need to add this code to the create method: Next we set up the relationship for that key.
A foreign key is simply a reference to a primary key on a different table. To set up the relationship, we use the schema builder documented here: Looking at this line of code: The schema builder makes this SQL query much easier to grasp.
Now we have our many-to-many table structured! We just need to instruct our models on how to use it. This will be the model we use for our Brew Methods table. First we need to declare our model and add the table it uses: To do this, we will be creating a method that contains our relationship so add: Now we need to use the belongsToMany relationship provided by Eloquent.
In our cafes method, we should add this code: I like to explicitly declare these two parameters in case there is a different key used for primary keys. Our Brew Methods are now set up correctly, so next we should configure our Cafes. To do this, add this function to the Cafe. The documentation states it here: We want to do this by calling the relationship method on the model when we retrieve our data. Right now we are calling: We want to call our relationship to the Brew Methods in this as well, so we need to change the code to: