Общая ошибка: 1366 неверное целое значение (ИСКЛЮЧЕНИЕ ЗАПРОСА)

#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 ;