2017-10-26 7 views
0

私はいじくりコマンドで私のMySQLデータベースをシードしようと2つのそれぞれのループを組み合わせることstruggelingている...方法2つの各ループでいじくりを使用して、データベースのダミーデータを種子に - Laravel PHP

私はテーブルの映画を持って、ユーザー、および評価。私は、10の映画、3のユーザー、および各ユーザーのために各映画の評価をデータベースに書きたいと思っています。

私は、ユーザーの映画と$映画と$ユーザーにそれらを保存する2つのテーブルにデータを入れています。そして、以下の行で、ムービーごとにuser_idとmovie_idで3つのレーティングを作成しようとします。

$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をエコーアウトすると、そこにデータが表示されます。 2

は、テストのための構文を簡素化しようとしたライン上のユーザー: HPのお知らせ:未定義の変数と同じエラーで

$movies->each(function ($movie) {$users->each(function($user) {echo $movie;});}); 

最後の行はエラーを私に戻っています。

私は$ users変数が最初の関数の中で定義されていないと思いますか? 最初の関数の中に$ usersを定義する必要はありますか?どの映画に3人の新しいユーザーを作成したくないのですか?たぶん、私は何とかforループを使用して、ユーザーを反復してユーザーIDを取得することができますか?私は

答えて

3

同様use ($users)に必ず助けを事前に

感謝。 PHPでClosureを使用する場合は、関数のスコープから使用される変数を宣言する必要があります。

$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]); 
    }); 
}); 
+0

この高速回答のおかげで、完璧に動作します。 – Marco

関連する問題