У меня есть таблица users
с полем parent_id
, и я хочу заполнить, но моя проблема в том, что я хочу, чтобы столбец parent_id
имел значение, основанное на той же таблице users
. Я хочу получить parent_id
на основе role = 3
из моей таблицы users
. Как мне этого добиться? Таблица пользователей и студентов одинакова. Это имеет значение только в столбце roles
.
Структура таблицы
+-------------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------------+------------------+------+-----+---------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| name | varchar(191) | NO | | NULL | |
| fname | varchar(191) | NO | | | |
| lname | varchar(191) | NO | | | |
| email | varchar(191) | NO | UNI | NULL | |
| password | varchar(191) | NO | | NULL | |
| role | int(11) | NO | | 0 | |
| school_id | int(11) | NO | | NULL | |
| student_school_id | varchar(191) | YES | | NULL | |
| student_card_no | varchar(191) | YES | | NULL | |
| section_id | int(11) | YES | | NULL | |
| parent_id | int(11) | NO | | 0 | |
| gender | int(11) | NO | | 1 | |
| birthdate | date | YES | | NULL | |
| address | varchar(191) | NO | | | |
+-------------------+------------------+------+-----+---------+----------------+
моя сеялка
$faker = \Faker\Factory::create();
$numberOfStudents = $faker->numberBetween(0, 5);
for($i = 0; $i < $numberOfStudents; $i++)
{
User::firstOrCreate([
'name' => $faker->name,
'student_school_id' => $faker->unique()->numberBetween(1, 1000),
'student_card_no' => $faker->unique()->numberBetween(1, 1000),
'email' => $faker->email,
'parent_id' => // I want the expression (random user_id where role = 3)
'password' => bcrypt('ggness'),
'school_id' => 1,
'role' => 4,
'confirmed' => 1
]);
}