Laravel в PHP Общая ошибка: 1366 Неверное целочисленное значение - PullRequest
0 голосов
/ 01 июня 2018
    $id = DB::table('utilisateur')
        ->select('idUtlstr')
        ->where('email','=',$request ->input("email"))
        ->get();

    DB::table('client')->insert(
        [
            'idClient' => $id, 
            'nbrSignl' => 0,
            'numPermis' => 0, 
            'quest1' => 'vide',
            'quest2' => 'vide',
            'quest3'=> 'vide',
            'datePermis' => '2000-01-01',
            'numCompte' => 0 ,
            'blocage' => 'non' 
        ]
    );

SQLSTATE [HY000]: общая ошибка: 1366 Неверное целочисленное значение: '[{"idUtlstr": 25}] для столбца' idClient 'в строке 1 (SQL: вставить в client (idClient, nbrSignl, numPermis, quest1, quest2, quest3, datePermis, numCompte, blocage) значений ([{"idUtlstr": 25}], 0,0, смотри, смотри, смотри, 2000-01-01, 0, не))

Ответы [ 4 ]

0 голосов
/ 08 декабря 2018

Это потому, что $id является целым числом и запрос возвращает объект .Например, значение $id равно 2 в вашей базе данных, но запрос возвращает его как '{"id":2}', а не 2.

Что вам нужно сделать, это добавить вторую переменную, чтобы получить идентификатор:

$myid = $id->id

Это равно $myid = 2.Затем вы можете использовать $myid для второго запроса, и все будет работать нормально.

На основании вашего кода это должно работать:

$id = DB::table('utilisateur')
    ->select('idUtlstr')
    ->where('email','=',$request ->input("email"))
    ->get();
    $myid = $id->id

DB::table('client')->insert(
    [
        'idClient' => $myid, 
        'nbrSignl' => 0,
        'numPermis' => 0, 
        'quest1' => 'vide',
        'quest2' => 'vide',
        'quest3'=> 'vide',
        'datePermis' => '2000-01-01',
        'numCompte' => 0 ,
        'blocage' => 'non' 
    ]
);
0 голосов
/ 01 июня 2018

Попробуйте

$utilisateur = DB::table('utilisateur')
    ->select('idUtlstr')
    ->where('email',$request->input("email"))
    ->first();
if (!empty($utilisateur)) {
   $id = $utilisateur->idUtlstr;  
   $data = [
      'idClient' => $id, 
      'nbrSignl' => 0,
      'numPermis' => 0, 
      'quest1' => 'vide',
      'quest2' => 'vide',
      'quest3'=> 'vide',
      'datePermis' => '2000-01-01',
      'numCompte' => 0 ,
      'blocage' => 'non' 
   ];
   DB::table('client')->insert($data);
}
0 голосов
/ 01 июня 2018

Используйте это, я надеюсь, что это будет работать.

$id = DB::table('utilisateur')
            ->select('idUtlstr')
            ->where('email','=',$request ->input("email"))
            ->first();

        DB::table('client')->insert(
            [
                'idClient' => $id->idUtlstr, 
                'nbrSignl' => 0,
                'numPermis' => 0, 
                'quest1' => 'vide',
                'quest2' => 'vide',
                'quest3'=> 'vide',
                'datePermis' => '2000-01-01',
                'numCompte' => 0 ,
                'blocage' => 'non' 
            ]
        );
0 голосов
/ 01 июня 2018

Это потому, что $id не является целым числом после запроса вашей базы данных.Ваш запрос возвращает объект, который является коллекцией элементов, и вам нужно правильно его получить ...

Do var_dump($id), и вы увидите, что он возвращает stdClass.

Используйте это после запроса:

$my_id = $id{0}->idUtlstr

И использовать эту переменную во втором запросе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...