bonjour tt le monde , j'ai essayé de récupérer de données depuis la base et tout fonctionne bien , mais le probléme ce que je veut mettre les valeur qui circuler par bleu dans un tableau.

j'ai érire ce code :
$cl= DB::table('client_cours')->select('client_id')->get();
$freeclient = DB::table('client')->whereNotIn('id',$cl)->get();

mais tjrs il m'affiche cette erreur ci-dessous :

7 réponses


thamer belfkih
Auteur
Réponse acceptée

voila la solution que je trouvais :

$cl= DB::table('client_cours')->lists('client_id');
        list($keys, $values) = array_divide($cl);
        $freeclient =  DB::table('client')->whereNotIn('id',$values)->get();

Hello,

L'erreur parle d'elle même , il attend un string pour le paramètre du WhereIn. Cependant, c'est soit un string soit un array.
La tu lui file un objet (Une collection). Regarde du côté des méthodes disponible sur les collections, tu trouvera ton bonheur : http://laravel.com/docs/5.1/collections

ok , merci

Salut,

@PallMallShow +1

Essaye de faire ceci à ce moment là (code non testé je te laisse le soin de peaufiner si besoin est) :

$cl= DB::table('client_cours')->select('client_id')->get();
$ids = collect($cl)->toArray();
$freeclient = DB::table('client')->whereNotIn('id',array_values($ids))->get();

plus simple encore

// ->lists(ta_cle_ici) retourne bien un array de valeur et non pas une collection
$cl = DB::table('client_cours')->lists('client_id');
$freeclient = DB::table('client')->whereNotIn('id',$cl)->get();

http://laravel.com/docs/5.1/queries#retrieving-results

ici le array_divide que tu as mis ne sert pas à grand chose car ->lists() retour un array de valeur
PS : c'est pas la première fois que je vois ça mais, en général si vous pouvez résoudre vos sujets vous même après quelques recherches à peine autant ne pas les poster lol

@darkylmnx +1