Codeigniter 4 Index non défini: user_id
J'essaie d'afficher un résultat de «jointure» et je ne veux afficher le user_id, le nom d'utilisateur, l'email qu'une seule fois pour la table des utilisateurs, même s'il y a beaucoup d'enregistrements sur l'autre table, j'ai donc essayé de créer un générateur de requête comme ci-dessous:
Table users | Table add_game
|
user_id | username | email | game_id | user_id | ign | acc_id
1 | userA | [email protected] | 1 | 1 | ignA | accA
2 | userB | [email protected] | 2 | 1 | ignB | accB
| 1 | 2 | ignB | accB
| 3 | 2 | ignD | accD
Modèle :
<?php namespace App\Models;
use CodeIgniter\Database\ConnectionInterface;
class LoginModel{
protected $db; public function __construct(ConnectionInterface &$db){
$this->db =& $db;
}
public function login(string $str) { return $this->db->table('users')
->groupStart()
->where('username', $str) ->orWhere('email', $str)
->groupEnd()
->join('add_game', 'add_game.user_id = users.user_id')
//->distinct('users.user_id')
//->select(("GROUP_CONCAT(game_id, ign, acc_id) AS userdata"))
->get()
->getResultArray();
}
}
Manette :
public function login()
{
$data = []; helper(['form']); $validation = \Config\Services::validation();
$db = db_connect(); $model = new LoginModel($db); $user = $model->login($this->request->getVar('userlogin'));
$this->setUserSession($user);
echo view('templates/header', $data); echo view('account/login', $data);
echo view('templates/footer', $data); } private function setUserSession($user){
$data = [ 'user_id' => $user['user_id'],
'username' => $user['username'], 'email' => $user['email'],
'firstname' => $user['firstname'], 'lastname' => $user['lastname'],
'dob' => $user['dob'], 'country' => $user['country'],
'country_code' => $user['c_code'], 'contact' => $user['contact'],
'game_id' => $user['game_id'], 'ign' => $user['ign'],
'acc_id' => $user['acc_id'], 'isLoggedIn' => true ]; session()->set($data);
return true;
}
Mais maintenant je reçois
Index non défini: user_id
Message d'erreur. Auparavant, il n'y avait pas de problème ou d'erreur lorsque j'utilisais sans générateur de requête pour ma connexion:
public function login(string $str, string $fields, array $data) { return $this->where('username', $data['userlogin'])->orWhere('email', $data['userlogin'])
->first();
}
Comment résoudre cette erreur?
Réponses
Selon votre commentaire (image), votre tableau ressemble à:
Array
(
[0]=>Array
(
[user_id]=>1,
[user_name]=>'test',
//etc.
)
)
Vous obtenez le
Index non défini: user_id
message d'erreur, en raison d'un mauvais adressage du tableau lors de l'utilisation 'user_id' => $user['user_id']
la bonne façon est d'ajouter l'index que vous souhaitez récupérer comme:
$this->setUserSession($user[0]); // where 0 can be changed to the index you pretend
maintenant le tableau est aplati et 'user_id' => $user['user_id']
ne génère plus d'erreur.