我正在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']);
}
在向现有日志(log)添加新活动时,在我的存储方法中,我只需执行以下操作:
$log->activities()->syncWithoutDetaching([
$request->input('activity_id') => [
'sets' => $request->input('sets'),
'reps' => $request->input('reps')
]
]);
我收到以下错误:
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'id' in 'where clause'
select * from `user_activity_log` where `id` = 0 limit 1
不过,数据正在保存,所以当我刷新页面并再次提交表单时,没有任何错误.我不明白为什么它要在user_activity_log
表中找到id
.