2017-10-26 13 views
0
내가 어설프게 명령으로 내 MySQL 데이터베이스를 시드 시도하고 두 개의 각 루프 결합 struggeling 있습니다

...방법이 개 각 루프가 어설프게을 사용하여 데이터베이스 더미 데이터를 시드 - Laravel PHP를

나는 테이블 영화, 사용자가 , 등급. 나는 10 개의 영화, 3 명의 사용자 및 각 사용자에 대해 각 영화에 대한 등급으로 데이터베이스를 분류하려고합니다.

나는 두 개의 테이블 사용자 및 영화에 데이터를 저장하고이를 $ movies 및 $ users에 저장합니다. 그리고 다음 줄을 사용하여 각 영화의 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가 표시되고 $ 사용자가 데이터를 표시합니다. 2

테스트를 위해 구문을 단순화하기 위해 노력 라인 사용자 : HP 공지 사항 : 정의되지 않은 변수에 동일한 오류와

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

마지막 줄에 오류가 날 다시 제공합니다.

$ users 변수가 첫 번째 함수 안에 정의되어 있지 않습니까? 첫 번째 함수에서 $ 사용자를 정의해야합니까? 각 영화마다 3 명의 새로운 사용자를 만들고 싶지 않으면 어떻게해야합니까? 어쩌면 for 루프를 어떻게 든 사용하여 사용자를 반복하고 사용자 ID를 검색 할 수 있습니까? 나를

답변

3

뿐만 아니라 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]); 
    }); 
}); 
+0

이 빠른 답변에 감사드립니다. – Marco