Laravel syncWithoutDetaching с дополнительными полями ⇐ Php
-
Anonymous
Laravel syncWithoutDetaching с дополнительными полями
Я пытаюсь сохранить простое отношение 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('каскад') ->onUpdate('каскад'); $table->foreign('log_id')->references('id')->on('user_logs') ->onDelete('каскад') ->onUpdate('каскад'); }); Мои модели Журнал и Активность имеют следующие отношения:
Журнал:
активность публичной функции() { return $this->belongsToMany(Activity::class, 'user_activity_log', 'log_id', 'activity_id')->withPivot(['sets', 'reps']); } Действие:
журналы общедоступных функций() { return $this->belongsToMany(Log::class, 'user_activity_log', 'activity_id', 'log_id')->withPivot(['sets', 'reps']); } При добавлении нового действия в существующий журнал в моем методе магазина я делаю следующее:
$log->activities()->syncWithoutDetaching([ $request->input('activity_id') => [ 'наборы' => $request->input('наборы'), 'reps' => $request->input('reps') ] ]); Я получаю эту ошибку:
SQLSTATE[42S22]: Столбец не найден: 1054 Неизвестный идентификатор столбца в разделе «where» выберите * из `user_activity_log`, где `id` = 0, предел 1 Однако данные сохраняются, поэтому, когда я обновляю страницу и снова отправляю форму, ошибок не возникает. Я не могу понять, почему он пытается найти id в таблице user_activity_log.
Я пытаюсь сохранить простое отношение 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('каскад') ->onUpdate('каскад'); $table->foreign('log_id')->references('id')->on('user_logs') ->onDelete('каскад') ->onUpdate('каскад'); }); Мои модели Журнал и Активность имеют следующие отношения:
Журнал:
активность публичной функции() { return $this->belongsToMany(Activity::class, 'user_activity_log', 'log_id', 'activity_id')->withPivot(['sets', 'reps']); } Действие:
журналы общедоступных функций() { return $this->belongsToMany(Log::class, 'user_activity_log', 'activity_id', 'log_id')->withPivot(['sets', 'reps']); } При добавлении нового действия в существующий журнал в моем методе магазина я делаю следующее:
$log->activities()->syncWithoutDetaching([ $request->input('activity_id') => [ 'наборы' => $request->input('наборы'), 'reps' => $request->input('reps') ] ]); Я получаю эту ошибку:
SQLSTATE[42S22]: Столбец не найден: 1054 Неизвестный идентификатор столбца в разделе «where» выберите * из `user_activity_log`, где `id` = 0, предел 1 Однако данные сохраняются, поэтому, когда я обновляю страницу и снова отправляю форму, ошибок не возникает. Я не могу понять, почему он пытается найти id в таблице user_activity_log.
Мобильная версия