1

値を持つ雄弁なデータベースモデルを保存しないようにしていnullます。移行ファイルにこれがあります:

$table->increments('id')->unique();
$table->string('name', 255)->unique();
$table->string('email', 255)->unique();
$table->string('password', 64);
$table->timestamps();

スキーマのドキュメントには、デフォルト値はNOT NULLであると書かれてい->nullable()ますが、null 値を許可できます。したがって、私のUserモデル セットの電子メール メソッドは次のようになります。

public function setEmailAttribute( $value ) 
{
    if ( filter_var( $value, FILTER_VALIDATE_EMAIL ) ) 
    {
        $this->attributes['email'] = strtolower( $value );
    } 
    else 
    {
        return false;
    }
}

しかし今、私の TestClass では、彼はメールアドレスを設定せずにモデルを保存しています!?!

$userSave3 = new User;
$userSave3->setNameAttribute('wrongUser');
$this->assertEquals( false, $userSave3->setEmailAttribute('wrongemail') );
$userSave3->setPasswordAttribute('password');
// Failed asserting that true matches expected false.
$this->assertEquals( false, $userSave3->save() );

NOT NULLでは、データ制約を追加するにはどうすればよいでしょうか? 開発モードで SQLite を使用しています。

4

1 に答える 1

1

Taylor Otwell は最近、このバグは修正されたと述べています。過去に私は Github に問題を提出しましたが、今では Otwell からの回答を見ることができます:

これは修正されたと思います。

https://github.com/laravel/framework/issues/2120#issuecomment-25551048

于 2013-10-02T16:02:38.710 に答える