在 null 上调用成员函数 socials()

Call to a member function socials() on null

我在 laravel 中有以下迁移:

    Schema::create('settings', function (Blueprint $table) {
        $table->increments('id');
        $table->longText('about_us');
        $table->string('phone');
        $table->string('email');

        $table->timestamps();
    });

    Schema::create('socials', function (Blueprint $table) {
        $table->increments('id');
        $table->string('title');
        $table->string('link');
        $table->integer('setting_id')->unsigned();
        $table->timestamps();
        $table->foreign('setting_id')
            ->references('id')->on('settings')
            ->onDelete('cascade');
    });

在设置模型中我有很多关系:

 public function socials()
{
    $this->hasMany(Social::class,'setting_id');
}

在我的控制器中,我这样做:

    $settings = new Setting();
    $settings->about_us = $request->get('about_us');
    $settings->email = $request->get('email');
    $settings->phone = $request->get('phone');
    $settings->save();
    $settings->socials()->saveMany([
        $this->make_socials($request, 'facebook'),
        $this->make_socials($request, 'linkedin'),
        $this->make_socials($request, 'instagram')
    ]);
    return responder()->success($settings)->respond('200');
}

我得到这个错误是什么?

你错过了 return 关系方法。

public function socials()
{
    return $this->hasMany(Social::class,'setting_id');
}

在这种情况下,当您没有将值设置为 setting_id 时,将其设置为 nullable.Because 然后它会给您一个 error.Because 而不是 nullable.Make 可以为空

$table->integer('setting_id')->unsigned()->nullable();

然后

php artisan migrate:refresh