38 votes

Appel à une méthode non définie Illuminate \Database\Query\Builder ::lists() lors de l'ensemencement après la mise à jour vers Laravel 5.3

Je suis en train de mettre à jour vers laravel 5.3, et je reçois ce message :

[2016-08-23 23:12:39] local.ERROR: BadMethodCallException: Call to undefined method Illuminate\Database\Query\Builder::lists() in /home/vagrant/Code/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php:2431
Stack trace:
#0 [internal function]: Illuminate\Database\Query\Builder->__call('lists', Array)
#1 /home/vagrant/Code/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php(1423): call_user_func_array(Array, Array)
#2 /home/vagrant/Code/vendor/cviebrock/eloquent-sluggable/src/SluggableTrait.php(254): Illuminate\Database\Eloquent\Builder->__call('lists', Array)
#3 /home/vagrant/Code/vendor/cviebrock/eloquent-sluggable/src/SluggableTrait.php(170): App\User->getExistingSlugs('nouseratnouser-...')
#4 /home/vagrant/Code/vendor/cviebrock/eloquent-sluggable/src/SluggableTrait.php(312): App\User->makeSlugUnique('nouseratnouser-...')
#5 /home/vagrant/Code/vendor/cviebrock/eloquent-sluggable/src/SluggableServiceProvider.php(72): App\User->sluggify()
#6 [internal function]: Cviebrock\EloquentSluggable\SluggableServiceProvider->Cviebrock\EloquentSluggable\{closure}(Object(App\User))
#7 /home/vagrant/Code/vendor/laravel/framework/src/Illuminate/Events/Dispatcher.php(221): call_user_func_array(Object(Closure), Array)
#8 /home/vagrant/Code/vendor/laravel/framework/src/Illuminate/Events/Dispatcher.php(164): Illuminate\Events\Dispatcher->fire('eloquent.saving...', Array, true)
#9 /home/vagrant/Code/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(1664): Illuminate\Events\Dispatcher->until('eloquent.saving...', Object(App\User))
#10 /home/vagrant/Code/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(1456): Illuminate\Database\Eloquent\Model->fireModelEvent('eloquent.saving...')
#11 /home/vagrant/Code/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(562): Illuminate\Database\Eloquent\Model->save()
#12 /home/vagrant/Code/database/seeds/UserSeeder.php(34): Illuminate\Database\Eloquent\Model::create(Array)
#13 /home/vagrant/Code/vendor/laravel/framework/src/Illuminate/Database/Seeder.php(39): UserSeeder->run()
#14 /home/vagrant/Code/database/seeds/DatabaseSeeder.php(37): Illuminate\Database\Seeder->call('UserSeeder')
#15 /home/vagrant/Code/vendor/laravel/framework/src/Illuminate/Database/Console/Seeds/SeedCommand.php(63): DatabaseSeeder->run()
#16 /home/vagrant/Code/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(2279): Illuminate\Database\Console\Seeds\SeedCommand->Illuminate\Database\Console\Seeds\{closure}()
#17 /home/vagrant/Code/vendor/laravel/framework/src/Illuminate/Database/Console/Seeds/SeedCommand.php(64): Illuminate\Database\Eloquent\Model::unguarded(Object(Closure))
#18 [internal function]: Illuminate\Database\Console\Seeds\SeedCommand->fire()
#19 /home/vagrant/Code/vendor/laravel/framework/src/Illuminate/Container/Container.php(507): call_user_func_array(Array, Array)
#20 /home/vagrant/Code/vendor/laravel/framework/src/Illuminate/Console/Command.php(169): Illuminate\Container\Container->call(Array)
#21 /home/vagrant/Code/vendor/symfony/console/Command/Command.php(256): Illuminate\Console\Command->execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#22 /home/vagrant/Code/vendor/laravel/framework/src/Illuminate/Console/Command.php(155): Symfony\Component\Console\Command\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#23 /home/vagrant/Code/vendor/symfony/console/Application.php(818): Illuminate\Console\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#24 /home/vagrant/Code/vendor/symfony/console/Application.php(186): Symfony\Component\Console\Application->doRunCommand(Object(Illuminate\Database\Console\Seeds\SeedCommand), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#25 /home/vagrant/Code/vendor/symfony/console/Application.php(117): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#26 /home/vagrant/Code/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(111): Symfony\Component\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#27 /home/vagrant/Code/artisan(35): Illuminate\Foundation\Console\Kernel->handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#28 {main}  

J'ai vérifié le code qui en est la cause :

        User::create([
        'name' => 'No User',
        'email' => 'nouser@nouser.com',
        'password' => bcrypt('0'),
        'provider' => '0',
    ]);

Je ne comprends pas pourquoi.

Si je le commente, j'obtiens le même problème dans un autre fichier :

        Tournament::create([
        'user_id' => 1,
        'name' => "name",
        'dateIni' =>  $dateIni,
        'dateFin' =>  $dateIni,
    ]);

J'ai fait une recherche globale de "listes" sans succès...

Une idée de la raison pour laquelle cela se produit ? ??

1 votes

Voulez-vous s'il vous plaît l'erreur entière dans

0 votes

Je l'avais dans la console, c'est pour ça que je n'avais pas les logs complets.

87voto

Sang Nguyen Points 1034

Vous pouvez utiliser la méthode plumer . Méthode lists est supprimé dans Laravel 5.3. J'ai changé lists('key')->all() a pluck('key')->all() et ça marche maintenant.

0 votes

Bonjour Sang où vous avez remplacé pluck par des listes, j'ai le même problème avec la méthode create de la classe eloquent mais je ne comprends pas où exactement je dois remplacer pluck par des listes.

0 votes

Bonjour Junaid, Vous devez remplacer l'endroit où vous utilisez la fonction lists méthode.

0 votes

Merci pour votre réponse. J'ai en fait résolu mon problème en mettant à jour la bibliothèque eloquent-sluggable.

29voto

Mahbub Points 1931

Laravel 5.3 la méthode lists() est supprimée au profit de la méthode pluck(). Par exemple :

$userList = App\User::pluck('name', 'id');

0 votes

Il semble que vous maîtrisiez bien Laravel. J'ai besoin de votre aide. Regarde ici : stackoverflow.com/questions/41047583/

7voto

Alexey Mezenin Points 86781

lists() a été déprécié. Utilisez pluck() à la place.

La méthode lists sur la collection, le constructeur de requêtes et la requête Eloquent a été renommée en pluck. La signature de la méthode reste la même.

https://laravel.com/docs/5.3/upgrade#upgrade-5.3.0

0 votes

J'ai besoin de votre aide. Regarde ici : stackoverflow.com/questions/41887504/

0 votes

C'est incroyable de voir comment tu trouves une solution au problème d'OP et que tu obtiennes 0 (zéro !) votes positifs. Et deux gars qui postent exactement la même chose en 5 et 30 heures et ils obtiennent 27 y 12 des votes positifs.

0 votes

Je ne sais pas non plus. Pourquoi est-ce que c'est arrivé ? Peut-être que mon anglais n'est pas bon et que ma question ne l'est pas non plus.

1voto

jual ahmed Points 11

Oui, je viens de le trouver, mais ce qui est drôle, c'est qu'il est mentionné sous https://laravel.com/docs/5.3/upgrade#upgrade-5.2.0 ce qui n'est pas correct car cela fonctionnait jusqu'à la mise à jour de la v5.3.

0voto

Rai Ahmad Fraz Points 11
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
class ApiController extends Controller
{
    public function data()
    {
        $data = team::all();
        return $data;    
    }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X