【发布时间】:2022-01-27 19:11:33
【问题描述】:
目标是用强制性和随机菜单项填充表格。
以下情况仅适用于随机项目
父表
$parents = [
['id' => 1, 'parent' => 'AA'],
['id' => 2, 'parent' => 'BB'],
['id' => 3, 'parent' => 'CC'],
];
填充菜单表
$menus = [
['id' => 1, 'menu' => 'A'],
['id' => 2, 'menu' => 'B'],
['id' => 3, 'menu' => 'C'],
['id' => 4, 'menu' => 'D'],
['id' => 5, 'menu' => 'E'],
];
foreach ($menus as $menu) {
modelMenu::updateOrCreate([ 'id' => $menu['id']], $menu);
}
关系
$menus = Menu::all();
Parent::all()->each(function ($parent) use ($menus) {
$parent->menus()->attach(
$menus->random(rand(1, 5))->pluck('id')->toArray()
);
});
模型
class Parent extends Model
{
protected $fillable = ['parents'];
public function menus()
{
return $this->hasMany(Menu::class);
}
}
class Menu extends Model
{
protected $fillable = ['menus'];
public function parents()
{
return $this->belongsTo(Parent::class);
}
}
我打算实现的是每个父级必须有相关的 ids 1 和 2 菜单;
菜单 3、4 和 5 随机添加。
例子:
Parent AA - menus with ids 1, 2, 5;
Parent BB - menus with ids 1, 2, 4, 6;
Parent CC - menus with ids 1, 2, 3;
【问题讨论】:
-
播种应由工厂和播种机完成。为您的代码添加一些上下文以显示它在哪里以及它是如何运行的。
-
我通常使用工厂和播种机,但这是一个非常特殊的情况,只使用播种。我将编辑我的帖子以提供更多信息。