在 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
我在 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