在 Laravel 8 中,可以快速填充与工厂的关系。但是,我无法弄清楚如何产生多个关系。如何使用新的 Laravel 8 语法为每个链接创建随机或新关系?
此工厂语法仅在 Laravel 8 中可用。 https://laravel.com/docs/8.x/database-testing#factory-relationships
问题
考虑以下关系:
- 每个链接都属于一个网站和一个帖子。
- 网站和帖子都可以有很多链接。
<?php
class Post extends Model
{
use HasFactory;
function links()
{
return $this->hasMany(Link::class);
}
}
class Website extends Model
{
use HasFactory;
function links()
{
return $this->hasMany(Link::class);
}
}
class Link extends Model
{
use HasFactory;
function post()
{
return $this->belongsTo(Post::class);
}
function website()
{
return $this->belongsTo(Website::class);
}
}
我尝试过/想要的
我在下面尝试的只会为所有链接生成一个模型。如何使用新的 Laravel 8 语法为每个链接创建随机或新关系?
Link::factory()->count(3)->forPost()->forWebsite()->make()
=> Illuminate\Database\Eloquent\Collection {#4354
all: [
App\Models\Link {#4366
post_id: 1,
website_id: 1,
},
App\Models\Link {#4395
post_id: 1, // return a different ID
website_id: 1,
},
App\Models\Link {#4370
post_id: 1, // return a different ID
website_id: 1, // return a different ID
},
],
}