我正在try 将一个简单的belongsToMany
关系保存到我的数据库中.首先,我的桌子:
Schema::create('user_activity_log', function (Blueprint $table) {
$table->unsignedBigInteger('activity_id');
$table->unsignedBigInteger('log_id');
$table->unsignedInteger('sets');
$table->unsignedInteger('reps');
$table->primary(['activity_id', 'log_id']);
$table->foreign('activity_id')->references('id')->on('user_activities')
->onDelete('cascade')
->onUpdate('cascade');
$table->foreign('log_id')->references('id')->on('user_logs')
->onDelete('cascade')
->onUpdate('cascade');
});
我的Log
和Activity
型号有这样的关系:
日志(log):
public function activities()
{
return $this->belongsToMany(练习::class, 'user_activity_log', 'log_id', 'activity_id')->withPivot(['sets', 'reps']);
}
练习:
public function logs()
{
return $this->belongsToMany(日志(log)::class, 'user_activity_log', 'activity_id', 'log_id')->withPivot(['sets', 'reps']);
}
在这两个模型中,我都使用:
protected $guarded = [];
在向现有日志(log)添加新活动时,在我的存储方法中,我只需执行以下操作:
$log->activities()->syncWithoutDetaching([$request->input('activity_id'), ['sets' => $request->input('sets'), 'reps' => $request->input('reps')]]);
我收到以下错误:
SQLSTATE[HY000]: General error: 1364 Field 'sets' doesn't have a default value
insert into `user_activity_log` (`activity_id`, `log_id`) values (3, 2)
我不明白为什么它不能挽救sets
和reps
.当我把$request
值加到dd()
时,它们就在那里了.我的$log
也在那里.