I have 2 models that needs to be associated once the data was created. I already asked it here and got the answer. I implemented it and made some modification because it doesn't associate the data correctly. Now I have problem with the association. It is only associated on the last data.
What I'm expecting is all the data created from the factory is associated to each other.
When I do php artisan tinker and run App\App::first()->load('menus', 'menus.page') command, it does not give me the correct data. Please take a look at the result here.
As you can see, the right data shown only on the last object. The rest is null. How can I fix this? Please take a look at my seeder file below, do I made any mistake?
<?php
use App\App;
use App\Component;
use App\Menu;
use App\Page;
use App\Role;
use App\Submenu;
use App\User;
use Illuminate\Database\Seeder;
class UsersTableSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
$superadmin = Role::whereName('superadmin')->first();
$tester = new User();
$tester->name = "Tester";
$tester->email = "test@appbuilder.com";
$tester->password = bcrypt('password');
$tester->save();
$tester->roles()->attach($superadmin);
// Create 5 apps for each user
$tester->apps()->saveMany(factory(App::class, 5)->make())->each(function ($app) {
$menus = factory(Menu::class, 5)->make();
$pages = factory(Page::class, 5)->make();
// Create 5 menus for each app and 5 submenus for each menu
$app->menus()->saveMany($menus)->each(function ($menu) use ($pages) {
// Associate page with each menu
$pages->each(function ($page) use ($menu) {
$page->menu()->associate($menu);
});
// Create 5 submenus for each menu
$menu->submenus()->saveMany(factory(Submenu::class, 5)->make())->each(function ($submenu) use ($pages) {
// Associate page with each submenu
$pages->each(function ($page) use ($submenu) {
$page->submenu()->associate($submenu);
});
});
});
// Create 5 pages for each app and 5 components for each page
$app->pages()->saveMany($pages)->each(function ($page) {
$page->components()->saveMany(factory(Component::class, 5)->make());
});
});
}
}
from Laravel factories association only associates the last data. How to fix this?
No comments:
Post a Comment