Php 雄辩的firstOrNew()查询无法识别传递给它的参数

Php 雄辩的firstOrNew()查询无法识别传递给它的参数,php,laravel,eloquent,Php,Laravel,Eloquent,我正在尝试使用随机字符串名创建一组假用户,稍后我将使用ID来创建这些用户。我遇到了一个错误,它无法识别我传递的一些变量。下面是我的代码: $password = bcrypt($this->generateRandomString(15)); $user = User::firstOrNew([ 'email' => ($firstName . '@company.com'), 'password' =

我正在尝试使用随机字符串名创建一组假用户,稍后我将使用ID来创建这些用户。我遇到了一个错误,它无法识别我传递的一些变量。下面是我的代码:

        $password = bcrypt($this->generateRandomString(15));

        $user = User::firstOrNew([
            'email' => ($firstName . '@company.com'),
            'password' => $password,
            'username' => $username,
            'firstname' => $firstName,
            'lastname' => $lastName,
        ]);
        $user->save();
        $userIds[] = $user->id;
我正在使用firstOrNew,以防已经输入了具有该随机用户名的用户,在这种情况下,我将只使用其ID

通过测试,我知道
$username
$firstName
$lastName
在这些对象中都有数据,但无论出于何种原因,我在
'username'
上得到了一个关于重复错误的错误,因为它认为字段是空的(“”),即使我知道我的变量不是空的

换句话说,SQL语句只传递电子邮件和密码,而不传递其他三个变量。有什么想法吗


错误消息:

[Illuminate\Database\QueryException]                                                                                                               
SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'Ollie@positivelearning.com' for key 'users_email_unique' (SQL: insert into  
`users` (`email`, `password`, `username`, `updated_at`, `created_at`) values (Ollie@positivelearning.com, y$rx8R0N5dVAibjpXxV0OF4uGGb7lradsl2xME  
20ymMvv2YPaUWv3oq, olliepritsak, 2016-07-14 18:10:10, 2016-07-14 18:10:10))  

[PDOException]                                                                                            
SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '' for key 'users_username_unique' 

好的,因此根据错误(您发布的原始错误)…看起来您没有传递以下值,
'username'=>$username,'firstname'=>$firstname,'lastname'=>$lastname,

确保在您的
用户
模型中,您在
可填充
下有这些选项,如下所示:

protected $fillable = [
    ...
    'username',
    'firstname',
    'lastname',
];

我认为这就是你的问题的根源。

好的,因此根据错误(你发布的原始错误)…看起来你没有传递以下值,
'username'=>$username,'firstname'=>$firstname,'lastname'=>$lastname,

确保在您的
用户
模型中,您在
可填充
下有这些选项,如下所示:

protected $fillable = [
    ...
    'username',
    'firstname',
    'lastname',
];
我认为这就是问题的根源。

方法
firstOrNew()
试图使用所有给定的列/值对定位数据库记录。您应该只使用生成唯一密钥的属性,例如电子邮件

然后,如果模型是新的(
exists
为false),您需要检查模型的
exists
属性以填充剩余字段并保存它。

方法
firstOrNew()
试图使用所有给定的列/值对定位数据库记录。您应该只使用生成唯一密钥的属性,例如电子邮件


然后,如果模型是新的(
exists
为false),您需要检查模型的
exists
属性以填充剩余字段并保存它。

$username值是多少?^这是模型上的可填充字段吗?请不要插手!请找一些更好的抱怨@revo@MikeBarwick我的模型中没有可填充的
用户名
。粗心的错误。非常感谢。$username的值是多少?^这是您的模型上的可填充字段吗?请不要动手!请找一些更好的抱怨@revo@MikeBarwick我的模型中没有可填充的
用户名
。粗心的错误。非常感谢。是的,就是这样。谢谢你的帮助!没问题!这个错误我已经犯了一百次了。是的,就是这样。谢谢你的帮助!没问题!这个错误我已经犯了一百次了。