使用 laravel 工厂制作独特的行

Posted

技术标签:

【中文标题】使用 laravel 工厂制作独特的行【英文标题】:Make unique rows with laravel factory 【发布时间】:2021-12-15 10:58:49 【问题描述】:

在我的定义方法中我得到了这个:

$users = []; // List of user's ids
$items = []; // List of Item's ids

return [
    'user' => $this->faker->randomElement($user),
    'item'=> $this->faker->randomElement($item),
];

这会产生重复的行,(具有相同用户列和项目列的多行)。

例如:我的数据库

0: id:'1',user:'1',item:'1'
1: id:'2',user:'5',item:'4'
2: id:'3',user:'7',item:'12'
3: id:'4',user:'1',item:'3'
4: id:'5',user:'1',item:'1' // Duplicated
5: id:'6',user:'10',item:'11'

我怎样才能让它变得独一无二? (只有一行具有唯一用户和项目)

谢谢。

【问题讨论】:

【参考方案1】:

我认为最务实的做法就是在工厂外进行。在为每个工厂创建手动分配值时。

foreach ($users as $userId) 
    foreach ($items as $itemId) 
        factory(YourModel::class)->create(
            [
                'user' => $userId,
                'item' => $itemId,
            ]
        );
    

【讨论】:

以上是关于使用 laravel 工厂制作独特的行的主要内容,如果未能解决你的问题,请参考以下文章

laraver6-数据填充

PCB的制造流程谁知道啊 。

多层pcb线路板的制作流程

为啥我的行不会在数据工厂中被删除?

跨多个工作表的独特数据整合

如何获取与 Bllim Datatable 的另一个表相关的行的数组 - Laravel