ল্যারাভেল 5 - কারিগর বীজ [প্রতিবিম্ব ধারণা) শ্রেণীর গানগুলি টেবিলসিডার বিদ্যমান নেই


274

আমি যখন পিএইচপি কারিগর ডিবি চালাই : বীজ আমি নিম্নলিখিত ত্রুটি পাচ্ছি:

[ReflectionException] Class SongsTableSeeder does not exist

কি হচ্ছে?

আমার ডাটাবেসসিডার শ্রেণি:

<?php

use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;

class DatabaseSeeder extends Seeder {

    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        Model::unguard();

        $this->call('SongsTableSeeder');
    }

}

আমার গানের টেবিলসিডার শ্রেণি:

<?php

// Composer: "fzaninotto/faker": "v1.4.0"
use Faker\Factory as Faker;
use Illuminate\Database\Seeder;
use DB;

class SongsTableSeeder extends Seeder {

    public function run()
    {
        $faker = Faker::create();
        $songs = [];
        foreach(range(1, 10) as $index)
        {
            $songs[] = ['title' => $faker->words(rand(1,4))];
        }

        DB::table('songs')->insert($songs);

    }

}

107
composer dump-autoload?
থমাস জেনসেন 14

আমি ভেবেছিলাম ফেকার \ কারখানাকে ফ্যাকার হিসাবে ব্যবহার করুন; কাজ করছে?
সাশা 14

SongsTableSeederশ্রেণীর সংজ্ঞা সম্বলিত ফাইলটির পথ কী ?
ওয়াউটার জে


এটি ডাম্প এবং খারাপ
লুইজি লোপেজ

উত্তর:


747

আপনি করা প্রয়োজন SongsTableSeederফাইলে SongsTableSeeder.phpএকই ডিরেক্টরির যেখানে আপনি আপনার আছে DatabaseSeeder.phpফাইল।

এবং আপনার কনসোল চালানো দরকার:

composer dump-autoload

নতুন শ্রেণীর মানচিত্র তৈরি করতে এবং তারপরে চালনা করুন:

php artisan db:seed

আমি সবেমাত্র এটি পরীক্ষা করেছি। লারাভেল 5 এ এটি কোনও সমস্যা ছাড়াই কাজ করছে


1
আমি আমার বীজ শ্রেণিতে মডেলটি 'ব্যবহার' করিনি। এখন ঠিক কাজ করে।
জেমি পুল

1
composer dumpautoloadএছাড়াও উড়ে যায়
কনার জোঁক

সুরকার ডাম্প-অটোলোয়াড আমার কাছে সমস্যার সমাধান করে। রচয়িতা ডাম্প-অটোল্যাড আসলে কী করে?
Luís Almeida

5
@ LuísAlmeida dump-autoloadপ্রকল্পে অন্তর্ভুক্ত হওয়া দরকার এমন সমস্ত শ্রেণীর তালিকা পুনরায় জেনারেট করে, আপনার প্রকল্পের অভ্যন্তরে যখন নতুন শ্রেণি থাকে তখন এটি ব্যবহৃত হয়। সাধারণত দৌড়াদৌড়ি make:*নতুন তৈরি করা ক্লাস যুক্ত করবে, তবে আপনি নিজে নিজে একজন বীজ তৈরি করলে এটি ঘটে না। কমপক্ষে এটি আমি অনুসন্ধানের 5 মিনিট থেকে এটি কাজ করতে বুঝতে পারি। আমি বিশেষজ্ঞ নই।
এক্সান্দার লুসিয়ানো

আমি ডেভলপমেন্ট সার্ভারে লারাভেল 5.8 এর সাথে এই সমাধানটি চেষ্টা করেছিলাম এবং composer dump-autoloadআমার জন্য কাজ করেছি।
মাইকোডিংপ্রজেক্ট

19

আমি এটি করে এটি সমাধান করেছি:

  1. ফাইলের সামগ্রীটি অনুলিপি করুন।
  2. ফাইল সরান।
  3. রান কমান্ড: পিএইচপি কারিগর মেক: সিডার।
  4. এই ফাইলটিতে ফাইলের সামগ্রীটি অনুলিপি করুন।

ফাইলের নাম পরিবর্তন করার কারণে এটি ঘটেছে। কেন জানি না পরিবর্তনের পরে এটি কাজ করে নি।


2
সম্ভবত সুরকার ডাম্প-অটো চালানো সহজ ছিল। অটোলোডার এখন একটি পুরানো ফাইল সন্ধান করছে। সুতরাং আপনি যদি কমান্ড লাইনের মাধ্যমে এই ফাইলটি ডাম্প করেন তবে এটি নতুন ফাইলের সাথে একটি নতুন অটোলোডার ফাইল তৈরি করবে। ভবিষ্যতে তাই এটি চেষ্টা করুন =)
রন ভ্যান অ্যাসেল্ডনক


ভ্যান অ্যাসেলডোক, ভাল, composer dump-autoloadআমার পক্ষে কাজ করে না। এটির কাজ করার জন্য আমাকে অবশ্যই বীজ বর্গকে পুনরায় তৈরি করতে হবে।
Б.Б.

এটি আমাকে সাহায্য করেছিল। 'সুরকার ডাম্প-অটোল্যাড' আমার পক্ষেও কার্যকরভাবে কাজ করে না, আমার সার্ভার সেটিংসের সাথে কিছু করার বা এটি একটি ভাগ করা অংশ।
ডার্ক জান স্পিলম্যান

16

ফাইল SongsTableSeeder.php থাকা উচিত ডাটাবেসের / বীজ ডিরেক্টরি বা তার সাব হবে।

আপনার চালানো দরকার:

composer dump-autoload

এবং তারপর:

php artisan db:seed

বা:

php artisan db:seed --class=SongsTableSeeder

1
'পিএইচপি আর্টিসান ডিবি: বীজ --ক্লাস = গানেস টেবিলসিডির' কমান্ডের সাহায্যে পার্স ত্রুটি দেখতে সক্ষম । thnks !!
ওমিক

4

গানেরসটেবলসিডার.এফপি ডাটাবেস / বীজ ডিরেক্টরিতে থাকা উচিত

কনসোল কমান্ড পদক্ষেপগুলি:

composer dump-autoload

এবং তারপর:

php artisan cache:clear

এবং তারপর:

php artisan optimize

এবং তারপর:

php artisan db:seed

বা:

php artisan db:seed --class=SongsTableSeeder

আমার জন্য কাজ! বিশেষত php artisan optimizeঅংশ
মূসা এনদেদা

3

আমি খুব সাম্প্রতিক ল্যারাভেল 5 দেব রিলিজ চালাচ্ছি এবং আপনি যদি নামটির স্থানটি পরিবর্তন করেছেন তবে আপনার বীজ বর্গকে এভাবে কল করতে হবে:

$this->call('\todoparrot\TodolistTableSeeder');

স্পষ্টতই আপনাকে todoparrotআপনার নির্ধারিত নেমস্পেসের সাথে প্রতিস্থাপন করতে হবে । অন্যথায় আমি মূল প্রশ্নে নির্দেশিত একই ত্রুটিটি পেয়েছি।


3

ভুলে যাবেন না যে এর composer dump-autoloadঅটোলোড / ক্লাসম্যাপ বিভাগের সাথে সম্পর্কিত composer.json। আপনার যদি বীজ ডিরেক্টরি পরিবর্তন করতে হয় বা সোল্ডারগুলি সঞ্চয় করতে একাধিক ডিরেক্টরি ব্যবহার করতে হয় সে সম্পর্কে যত্ন নিন।

"autoload": {
    "classmap": [
      "database/seeds",
      "database/factories"
    ],
},

0

আমাদের কাস্টম টেবিলসিডার যদি ডেটাবেসসিডারের সাথে একই ডিরেক্টরিতে থাকে তবে আমাদের নীচের মতো ব্যবহার করা উচিত:

$this->call('database\seeds\CustomTableSeeder');

আমাদের ডাটাবেসসিডার ফাইলটিতে; তারপরে আর একটি ত্রুটি নিক্ষেপ করা হবে যা বলে: 'ডিবি ক্লাস পাওয়া যায় নি' তারপরে আমাদের নীচের মতো আমাদের কাস্টম টেবিলসাইডার ফাইলটিতে আমাদের ডিবি ফ্যাসাদ যুক্ত করা উচিত:

use Illuminate\Support\Facades\DB;

এটা আমার জন্য কাজ!


0

এটিতে দুটি ক্লাস সহ আমি কেবল সিঙ্গল ফাইল ব্যবহার করেছি:

use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;
use App\Lesson;

use Faker\Factory as Faker;

class DatabaseSeeder extends Seeder {

/**
 * Run the database seeds.
 *
 * @return void
 */
public function run()
{
    //Lesson::truncate();

    Model::unguard();

    $this->call("LessonsTableSeeder");


}

}

class LessonsTableSeeder extends Seeder {

/**
 * Run the database seeds.
 *
 * @return void
 */
public function run()
{

    $faker = Faker::create();

    foreach(range(1,30) as $index) {

        Lesson::create(['title' => $faker->sentence(5), 'body' => $faker->paragraph(4)]);

    }

}

}

0

আপনি যদি অন্য কোনও প্রকল্প থেকে সিডার ফাইলগুলি অনুলিপি করে থাকেন তবে আপনাকে কারিগর কমান্ডটি চালানো দরকার php artisan db:seedঅন্যথায় এটি ঠিক আছে।


0

[ReflectionException] Class Seeder does not existআমিও পেয়েছি এবং যখন আমি ব্যবহার composer dump-autoloadকরি preg_match(): JIT compilation failed: no more memoryতখন এটি চালানোর সময় আমি একটি ত্রুটি পেয়েছিলাম ।

কি আমি সেটা করেছিলাম আমি পরিবর্তন হয় ;pcre.jit=1করার pcre.jit=Offমধ্যে php.ini ! php --iniআপনার টার্মিনাল ব্যবহার করে আপনি পাথটি সন্ধান করতে পারেন !

আমি পিএইচপি 7.3 সঙ্গে ম্যাক ব্যবহার করছি! আশা করি ওখানে যে কেউ আপনাকে সেখানে সাহায্য করবে!


0

আপনি সম্ভবত .phpএক্সটেনশনটি নির্দিষ্ট করেছেন এবং এটি আপনার ক্লাসটি খুঁজে পায় না।

আমি যা করছিলাম:

php artisan db:seed --class=RolesPermissionsTableSeeder.php

আমার সমস্যার সমাধান কী: আমি যা করছিলাম:

php artisan db:seed --class=RolesPermissionsTableSeeder

-5

আমার একই "প্রতিবিম্ব ব্যতিক্রম" ত্রুটি ছিল। সমাধানটি ছিল আমার জন্য ডেভ থেকে সার্ভারে ক্লাস ফাইলটি অনুলিপি করা। বোবা ভুল, কিন্তু কতগুলি ফাইলের সাথে আমরা সেটিকে প্রতিবার সার্ভারে অনুলিপি করতে ভুলে যাওয়া সহজেই তার সাথে মোকাবিলা করি।


2
এই প্রতিক্রিয়াটি খুব অস্পষ্ট এবং আপনার নির্দিষ্ট হোস্টিং সেটআপের সাথে মিলিত। আপনার ইনপুটটির মূল্য নির্ধারণ করা হলেও এটি বিকাশকারীদের এই সমস্যার সমাধান খুঁজতে সাহায্য করতে পারে না। আমি মনে করি আপনার সমস্যাটি আপনি এটি সার্ভারে ফাইল অনুলিপি করার জন্য মানুষের কাছে রেখে দিয়েছিলেন। এটি একটি সিআই পাইপলাইন রাখতে উত্সাহিত হয়েছে যেখানে ফাইলগুলি স্বয়ংক্রিয়ভাবে সার্ভারে স্থাপন করা হয় :)
চার্জ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.