我正在尝试为我的users表播种。如果我这样尝试使用2行,它会失败。如果我只使用单个数组而不是$users数组中的2个数组来创建一些假数据,它会很好地工作。
我做错了什么,正确的方法是什么?
class UserTableSeeder extends Seeder {
public function run()
{
DB::table('users')->delete();
$users = [
['id' => 1, 'name' => 'Stephan de Vries', 'username' => 'stephan', 'email' => 'stephan-v@gmail.com', 'password' => bcrypt('carrotz124')],
['id' => 2, 'name' => 'John doe', 'username' => 'johnny', 'email' => 'johndoe@gmail.com', 'password' => bcrypt('carrotz1243')],
];
User::create($users);
}
}
7条答案
按热度按时间0vvn1miw1#
如果你必须使用模型,你需要一个循环:
否则,您可以使用
DB::table()
和insert
:实际上,您也可以在模型上调用
insert()
(结果查询是相同的)注意如果选择
insert
方法,则会失去特殊的Eloquent功能,例如时间戳和模型事件。cwdobuhd2#
这对Laravel来说是可行的^5
kmpatx3s3#
create()
只用于存储一条记录。要存储多条记录,您应该使用insert()
而不是create()
。因此代码如下所示:P.S.
insert()
函数不会存储时间戳。即created_by
和updated_by
字段。ndh0cuux4#
dfuffjeb5#
使用截断
oxosxuxt6#
如果有人正在努力解决这个问题,我从Laravel 5开始就一直在使用以下内容,并且可以确认仍然在**Laravel 7+**中工作。
s6fujrry7#
我这样做是为了插入新的和更新以前的记录每次播种机运行。