У меня есть две таблицы user_details
и location
, как показано ниже:
user_details
user_id (INTEGER PRIMARY KEY)
......
location
id (INTEGER UNSIGNED PRIMARY KEY)
......
Эти две таблицы связаны между собой многими и могут быть взаимосвязаны.Теперь я использую сводную таблицу location_user_details
, как показано ниже
location_user_details
id (INTEGER UNSIGNED PRIMARY KEY),
user_id (INTEGER FOREIGN KEY REFERENCES use_details.user_id)
location_id (INTEGER FOREIGN KEY REFERENCES location.id)
type (VARCHAR)
Код отношения для модели UserDetails
выглядит следующим образом:
class UserDetails extends Model
{
protected $primaryKey = 'user_id';
........
public function location(){
return $this->belongsToMany(Location::class, 'location_user_details', 'user_id', 'id')->withPivot('type');
}
}
Код отношения для модели Location
как показано ниже:
class Location extends Model
{
......
public function userDetails(){
return $this->belongsToMany(UserDetails::class, 'location_user_details', 'id', 'user_id')->withPivot('type');
}
}
Теперь в моем контроллере я создаю отношение после сохранения объекта UserDetails
и Location
с помощью следующего кода:
$userDetails->location()->attach($location->id, ['type'=>'HEADQUARTER']);
Когдакод достигает этой строки выполнения, я получаю следующее исключение:
SQLSTATE [HY000]: общая ошибка: 1364 Поле 'location_id' не имеет значения по умолчанию (SQL: вставить в location_user_details
(id
, type
, user_id
) значения (1, HEADQUARTER, 0))
Я хочу указать на две вещи, которые происходят.
- Поле ввода не попадает в запрос для вставки данных.
- Значение
user_id
равно 0
, которое должно быть больше 0
, поскольку данные вставляются в user_details
Таблица.
Теперь позвольте мне упомянуть здесь, что, когда я иду в базу данных, искать данные в location
и user_details
Таблица, я считаю, все данные были вставлены.
Теперь мой вопрос, что возможно пошло не так с этим кодом?