Есть много других вопросов, связанных с этим, когда люди неправильно его использовали, но я уверен, что у меня есть правильный синтаксис, и он просто опускает поисковый термин к тому моменту, когда он превращается в sql.
Я сделал 2 итерации. Один, где я снова добавляю 'sub', а другой, где я не
protected function upsertUser( $profile ) {
$sub = $profile['sub'];
$email = $profile['email'];
$name = $profile['name'];
Log::stack(['single'])->critical(compact("sub", "email", "name"));
return User::firstOrCreate(compact("sub"), ['sub' => $profile['sub'], 'email' => $profile['email'] ?? '', 'name' => $profile['name'] ?? '']);
}
protected function upsertUser( $profile ) {
$sub = $profile['sub'];
$email = $profile['email'];
$name = $profile['name'];
Log::stack(['single'])->critical(compact("sub", "email", "name"));
return User::firstOrCreate(compact("sub"), ['email' => $profile['email'] ?? '', 'name' => $profile['name'] ?? '']);
}
В обоих случаях sub просто не попадает в создание, которое завершается неудачно с: сообщением показывая, что он даже не пытается вставить 'sub'
Регистрация массива показывает, что он содержит нужные данные.
Теперь я наткнулся на сообщение, в котором кто-то предположил, что именно защита от массовых назначений мешает мне добавить подпрограмму. Я не думаю, что это связано, но я попытался добавить
protected $fillable = [
'name',
'email',
'sub',
];
к модели пользователей, но это не помогло. Я не хочу разрешать обнулять, потому что мне нужны эти данные.