laravel - Laravel 7:如何在数据播种器数组中使用
问题描述
如何使用数据库播种器使用自定义数组进行不同的插入?
使用以下代码:
$categories = ['Hardware', 'Software', 'Planning', 'Tools'];
foreach ($categories as $category) {
App\Category::insert([
'name' => $category,
'slug' => Str::slug($category),
]);
}
如果我使用insert
或create
.
它给出了这个错误
Unable to locate factory for [App\Category].
at vendor/laravel/framework/src/Illuminate/Database/Eloquent/FactoryBuilder.php:273
269| */
270| protected function getRawAttributes(array $attributes = [])
271| {
272| if (! isset($this->definitions[$this->class])) {
> 273| throw new InvalidArgumentException("Unable to locate factory for [{$this->class}].");
274| }
275|
276| $definition = call_user_func(
277| $this->definitions[$this->class],
谢谢
解决方案
在播种器文件的 run 方法中创建一个数据数组
public function run()
{
$categories = [
['name' => 'Music'],
['name' => 'Gaming'],
['name' => 'Entertainment'],
['name' => 'Non-Profit & Activism'],
['name' => 'Other'],
];
foreach ($categories as $category) {
Category::create($category);
}
}
您正在将所有数据推送到模型中,因此您需要在模型中设置可填充或保护。
class Category extends Model
{
protected $guarded = [];
}
推荐阅读
- c++ - 如何为不同的向量指针集合释放内存
- excel - 是否有一种技术可以在将模板复制并粘贴到 SAME 工作表上的新位置时更新 VBA 语句?
- javascript - 解构函数调用
- python - BeautifulSoup(bs4)没有使用 find_all 或 select 或 select_one 获取元素
- github - 远程 -v 没有返回有关 git 存储库的任何信息
- python - 无法将 SQL 查询转换为 django
- xaml - Xamarin Hot Reload 确实...在进行更改时完全没有
- vba - 内容控制无法识别内容
- javascript - 使用 jQuery 检查最后一次双击的元素
- c++ - 定义未初始化的引用 C++