Я создаю учебное веб-приложение для отслеживания ассоциированного обучения и сертификации. Я создал модель Associate, которая использовала подключение вторичной БД к другой базе данных, чья информация была сгенерирована другим приложением, поэтому я не контролирую структуру данных. Таблица партнеров использует номер сотрудника в качестве первичного ключа, а не идентификатор с автоматическим увеличением. Я создал таблицу, чтобы отслеживать каждый проходящий курс обучения / сертификации. Я создал связь «многие ко многим» между сотрудником и курсом, но при попытке добавить запись в сводную таблицу я запускаю ошибку.
"SQLSTATE [42S02]: [Microsoft] [ODB C Драйвер 17 для SQL Сервер] [SQL Сервер] Недопустимое имя объекта 'associate_course'. ((SQL: вставить в [associate_course] ([associate_id], [course_id], [made_at], [updated_at]) ) значения (0000, 1, 2020-01-31 18: 36: 56.390, 2020-01-31 18: 36: 56.390)) ",
Вот функция, которая вызывается для создания запись в сводной таблице (где происходит ошибка)
public function trained(Course $course, Request $request) {
$request->validate([
'associates' => 'required'
]);
$associates = explode(',', $request->associates);
foreach($associates as $associate_number) {
$associate = Associate::where('NUMBER', $associate_number)->first();
$course->associates()->attach($associate);
}
}
Вот моя модель Associate
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Associate extends Model
{
protected $connection = 'SHOPFLOOR';
protected $table = 'USERS';
public function getRouteKeyName()
{
return 'NUMBER';
}
public function courses()
{
return $this->belongsToMany(Course::class, 'associate_course', 'associate_id', 'course_id', 'NUMBER', 'id')->withTimestamps();
}
}
, а вот моя модель курса
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Course extends Model
{
protected $fillable = ['course_type_id', 'name', 'date', 'expires', 'expires_at', 'notification_threshold'];
public function type() {
return $this->belongsTo(CourseType::class);
}
public function associates() {
return $this->belongsToMany(Associate::class, 'associate_course', 'course_id', 'associate_id', 'id', 'NUMBER')->withTimestamps();
}
}
Я попытался скопировать sql из сообщения об ошибке и запустить его в базе данных, и он действительно вставил строку в базу данных, что заставило меня поверить, что это что-то с моей Laravel конфигурацией?
Могу ли я получить некоторые помощь в устранении этой проблемы?