#php #mysql #database #laravel
#php #mysql #База данных #laravel
Вопрос:
Я пытаюсь добавить некоторые данные в базу данных из формы, но я получил исключение :
SQLSTATE[HY000]: General error: 1366 Incorrect integer value: '[{"ID_ARTICLE":58}]' for column 'ID_ARTICLE' at row 1 (SQL: insert into `annonce` (`TITRE_ANNONCE`, `TYPE_ANNONCE`, `PRIX`, `ID_ARTICLE`) values (titre, 1, 100, [{"ID_ARTICLE":58}]))
что означает, что я не могу вставить ID_ARTICLE, который является целым числом
вот мой запрос :
хранилище общедоступных функций (запрос $request) { $annonce = new annonce;
$IDARTICLE = DB::table('article')
->select('ID_ARTICLE')
->where('NOM_ARTICLE', $request->NOM_ARTICLE)
->get();
$annonce->TITRE_ANNONCE = $request->TITRE_ANNONCE;
$annonce->TYPE_ANNONCE = $request->TYPE_ANNONCE;
$annonce->PRIX = $request->PRIX;
$annonce->ID_ARTICLE = $IDARTICLE;
$annonce->save();
return ($annonce);
}
Я попытался заменить
$annonce->ID_ARTICLE = $IDARTICLE;
с
$annonce->ID_ARTICLE = $IDARTICLE->ID_ARTICLE;
чтобы извлечь целочисленное значение из списка, но показывает другую ошибку: свойство [ID_ARTICLE] не существует в этом экземпляре коллекции.
когда оно существует, как мы видим, любая помощь была бы заметна благодаря
Комментарии:
1. Измените -> get() на -> first(), потому что $IDARTICLE возвращает несколько результатов. Вам нужно одно.
2. я сделал, но он показывает другую ошибку: объект класса stdClass не удалось преобразовать в строку
Ответ №1:
Ваша переменная $IDARTICLE
содержит несколько наборов результатов. Вы должны получить идентификатор определенных записей и вставить в другую таблицу, подобную этой.
$IDARTICLE = DB::table('article')
->select('ID_ARTICLE')
->where('NOM_ARTICLE', $request->NOM_ARTICLE)
->first();
$annonce->TITRE_ANNONCE = $request->TITRE_ANNONCE;
$annonce->TYPE_ANNONCE = $request->TYPE_ANNONCE;
$annonce->PRIX = $request->PRIX;
$annonce->ID_ARTICLE = $IDARTICLE->ID_ARTICLE;
$annonce->save();
return ($annonce);
Комментарии:
1. не работает: объект класса stdClass не удалось преобразовать в строку
2. вы изменили метод
get()
наfirst()
?3. Эй, это работает, я заменил get() методом first(), затем $IDARTICLE на $IDARTICLE-> ID_ARTICLE;
4. Ответ был изменен. Просто замените
$IDARTICLE->id
на$IDARTICLE->ID_ARTICLE
;