Skip to content
Advertisement

Laravel factory and selected a unique belongsTo instance

I have a hasOne relationship in that a Campaign hasOne Product

The Product belongsTo the Campaign.

In this particular case, in the products database table, there should only ever be one, unique reference to a campaign. I set the constraint on the database side to unique. My question is, when defining a factory, how do I ensure that it picks a unique Campaign, which was previously created by a seeder?

JavaScript

It is obvious why Campaign::inRandomOrder()->first()->id won’t work. I don’t necessarily want to use a Campaign factory here to create a new Campaign either because there’s a lot of nuances in how each instance is created and I already take care of that in my CampaignSeeder

I am interested in just associating each Product created with a Campaign that has yet to be claimed when I seed. What’s the best way to approach this?

Advertisement

Answer

Assuming you have a relationship product in your campaign model

JavaScript

everytime it will get first campaign in your table that doesnt have a product

User contributions licensed under: CC BY-SA
7 People found this is helpful
Advertisement