Я пытаюсь заполнить свою базу данных mysql командами тинкера и изо всех сил комбинирую два цикла каждый …
У меня есть таблица фильмов, пользователей и рейтинги. Я хочу заполнить базу данных 10 фильмами, 3 пользователями, и для каждого пользователя оценка для каждого фильма.
Я помещаю данные в две таблицы: пользователи и фильмы и сохраняю их в $ фильмы и $ пользователи. И попробуйте создать 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]);}); });
Повторяю, $ фильмы и $ пользователи показывают мне, что данные там.
Последняя строка возвращает мне ошибку:
Уведомление HP: неопределенная переменная: пользователи в строке 2
попытался упростить синтаксис для тестирования:
$movies->each(function ($movie) {$users->each(function($user) {echo $movie;});});
с той же ошибкой.
Я предполагаю, что переменная $ users не определена внутри первой функции?
Нужно ли определять $ users внутри первой функции? Как мне это сделать, если я не хочу создавать 3 новых пользователей для каждого фильма? Может быть, я могу использовать цикл for, чтобы перебирать пользователей и таким образом получать идентификаторы пользователей?
заранее спасибо за помощь
Обязательно use ($users)
также. Вам нужно объявить переменные, используемые вне области действия функции при использовании Closures в 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]);
});
});
Других решений пока нет …