微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 Laravel 8 中使用工厂时,字段名称没有默认值错误

如何解决在 Laravel 8 中使用工厂时,字段名称没有默认值错误

这里是我的用户工厂:

<?PHP

namespace Database\Factories;

use App\User;
use Faker\Generator as Faker;
use Faker\Factory as FakerFactory;
use Illuminate\Database\Eloquent\Factories\Factory;
use Illuminate\Support\Str;

$factory->define(User::class,function (Faker $faker) {
    static $password;

    return [
        'firstname' => $this->faker->firstName(),'name' => $this->faker->lastName,'nickname' => $this->faker->userName,'email' => $this->faker->unique()->safeEmail,'password' => $password ?: $password = bcrypt('secret'),'remember_token' => Str::random(10),];
});

这是我的用户模型的第一部分:

class User extends Authenticatable implements HasLocalePreference
{
    use Notifiable;
    protected $table = 'users';
    protected $appends = ['avatar','targetLang','targetLangId','type','isAdmin'];
    protected $casts = [
        'preferences' => 'array',];

    protected $guarded= [];

    protected $hidden = [
        'password','remember_token','accesstoken','refreshToken',];

以及我打电话给工厂的测试:

class MoveCourseItemTest extends DuskTestCase
{
    /**
     * A Dusk test to move card in other block.
     *
     * @return void
     */
    public function testMoveCard() {

        // Create Teacher User
        $teacher = factory(User::class)->create([
            'isTeacher' => 1,'termsofuse_id' => 1,'privacypolicy_id' => 1,]);

最后我得到这个错误,仅在登台环境(不在本地环境):

Illuminate\Database\QueryException: sqlSTATE[HY000]: 一般错误: 1364 字段 'firstname' 没有认值(sql:插入到 users (name,email,password,remember_token,isTeacher,termsofuse_idprivacypolicy_idupdated_atcreated_at) 价值观 (Kenneth Altenwerth Jr.,koch.cooper@example.org,$2y$10$1B7LlTzM4iINkVI/82Pp6OHSUWBWaePPdDKMy1DRW2K02d8UYKc2S, r0WnPBrZGG,1,2021-07-29 21:12:54,2021-07-29 21:12:54))

有人知道我怎么解决吗?谢谢!

解决方法

使其在迁移中可以为空:

$table->string('name')->nullable();
,

在我看来,您的表中没有名字列。正如其他人所说,创建它并使其默认为可空。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。