如何使用带有两个 each 循环的 tinker 为数据库虚拟数据播种 - Laravel PHP
How to seed a database dummy data using tinker with two each loops - Laravel PHP
我尝试使用 tinker 命令为我的 mysql 数据库播种,并且正在努力组合两个 each 循环...
我有 table 部电影、用户和评分。我想用 10 部电影、3 个用户和每个用户对每部电影的评分为数据库播种。
我将数据放入两个 tables 用户和电影中,并将它们保存到 $movies 和 $users 中。并尝试使用以下行为每部电影创建 3 个 user_id 和 movie_id 评分。
$users = factory('App\User',3)->create();
$movies= factory('App\Movie',10)->create();
$movies->each(function($movie){ $users->each(function($user){ factory('App\Rating',3)->create(['movie_id'=>$movie->id,'user_id'=>$user->id]);}); });
回显 $movies 和 $users 告诉我数据在那里。
最后一行给我返回一个错误:
HP 注意:未定义的变量:第 2 行的用户
试图简化测试语法:
$movies->each(function ($movie) {$users->each(function($user) {echo $movie;});});
同样的错误。
我猜是不是第一个函数中没有定义 $users 变量?
我必须在第一个函数中定义 $users 吗?如果我不想为每部电影创建 3 个新用户,我该怎么做?也许我可以使用 for 循环以某种方式遍历用户并以这种方式检索用户 ID?
在此先感谢您对我的帮助
一定要use ($users)
。在 PHP!
中使用闭包时,需要声明在函数作用域外使用的变量
$movies->each(function($movie) use ($users){
$users->each(function($user) use ($movie){
factory('App\Rating',3)
->create(['movie_id'=>$movie->id,'user_id'=>$user->id]);
});
});
我尝试使用 tinker 命令为我的 mysql 数据库播种,并且正在努力组合两个 each 循环...
我有 table 部电影、用户和评分。我想用 10 部电影、3 个用户和每个用户对每部电影的评分为数据库播种。
我将数据放入两个 tables 用户和电影中,并将它们保存到 $movies 和 $users 中。并尝试使用以下行为每部电影创建 3 个 user_id 和 movie_id 评分。
$users = factory('App\User',3)->create();
$movies= factory('App\Movie',10)->create();
$movies->each(function($movie){ $users->each(function($user){ factory('App\Rating',3)->create(['movie_id'=>$movie->id,'user_id'=>$user->id]);}); });
回显 $movies 和 $users 告诉我数据在那里。 最后一行给我返回一个错误: HP 注意:未定义的变量:第 2 行的用户
试图简化测试语法:
$movies->each(function ($movie) {$users->each(function($user) {echo $movie;});});
同样的错误。
我猜是不是第一个函数中没有定义 $users 变量? 我必须在第一个函数中定义 $users 吗?如果我不想为每部电影创建 3 个新用户,我该怎么做?也许我可以使用 for 循环以某种方式遍历用户并以这种方式检索用户 ID?
在此先感谢您对我的帮助
一定要use ($users)
。在 PHP!
$movies->each(function($movie) use ($users){
$users->each(function($user) use ($movie){
factory('App\Rating',3)
->create(['movie_id'=>$movie->id,'user_id'=>$user->id]);
});
});