راکت

مشکل در استفاده از Faker فارسی

10 پاسخ

دوستان من دارم از یه پکیج فارسی برای faker داخل لاراول استفاده می کنم ولی موقعی که می خوام اطلاعات رو seed کنم این اررور رو بهم برمیگردونه
اینم کدم !

use App\Soldier;
use App\User;
use Carbon\Carbon;
use Illuminate\Support\Str;
use Ybazli\Faker\Faker as Faker;

$factory->define(Soldier::class, function (Faker $faker) {
    return [
        'first_name' => $faker->firstName(),
        'last_name' => $faker->lastName(),
        'fathers_name' => $faker->firstName(),
        'identification_code' => $faker->mellicode(),
        'birth_date' => Carbon::create(1994, 6, 15, 0, 0, 0),
        'marital_status' => 'single',
        'email' => $faker->email(),
        'mobile' => $faker->mobile(),
        'phone' => $faker->telephone(),
        'address' => $faker->address(),
        'description'=>$faker->sentence(),
    ];
});

اینم هم متن اررور . در صورتی که من Faker رو درست use کردم اون بالا !

Argument 1 passed to Illuminate\Database\Eloquent\Factory::{closure}() must be an instance of Ybazli\Faker\Faker, instance of Faker\Generator given

ثبت پرسش جدید

پاسخ‌ها

10
HRH
HRH
@h.r.hassani

تخصص: back-end developer , switching to AI

@ham.sarkhosh
اسم پکیجی که فیکر فارسی هست رو عوض کن .

hamed sarkhosh
hamed sarkhosh
@ham.sarkhosh

تخصص: برنامه نویس

@h.r.hassani
دقیقا کجا باید اسمش رو عوض کنم ؟
https://github.com/Ybazli/faker
این پکیجی هست که استفاده کردم

شاید پاسخ شما همین‌جا باشد

HRH
HRH
@h.r.hassani

تخصص: back-end developer , switching to AI

@ham.sarkhosh
نه منظورم اینه که به جای اینکه این رو بنویسی

use Ybazli\Faker\Faker as Faker;

مثلا اینو بنویس

use Ybazli\Faker\Faker as farsiFaker;

احتمالا وقتی اسم پکیج فارسی رو هم Faker می نویسی لاراول فک می کنه که این فیکر اصلیه برای همین خطا می ده

hamed sarkhosh
hamed sarkhosh
@ham.sarkhosh

تخصص: برنامه نویس

@h.r.hassani این کارو قبل اینکه سوال رو مطرح کنم تست کردم. جواب نداد

HRH
HRH
@h.r.hassani

تخصص: back-end developer , switching to AI

می خواهی این کار رو بکن شاید جواب داد

use Ybazli\Faker\Faker as Faker;
$farsifaker = app(Faker::class);
$factory->define(Soldier::class, function (Faker\Generator $mainfaker) use($faker) {...}
Ar4min
Ar4min
@ar4min

تخصص: Backend Developer

کلا این پکیج رو use نکن
چون بدون use کردن برای من داره جواب میده
مطمئن باش که این مقدار رو به providers

Ybazli\Faker\FakerServiceProvider::class,

و اینو به aliases اضافه کرده باشی

'Faker' => Ybazli\Faker\Facades\Faker::class,
hamed sarkhosh
hamed sarkhosh
@ham.sarkhosh

تخصص: برنامه نویس

@ar4min
قبلا اضافه کرده بودم اینارو
ولی بازم تست کردم جواب نداد.
میشه یه نمونه کد از کاری که کردی رو برام بفرستی ؟ از همون کد factory

hamed sarkhosh
hamed sarkhosh
@ham.sarkhosh

تخصص: برنامه نویس

@h.r.hassani نه متاسفانه اینم جواب نداد

HRH
HRH
@h.r.hassani

تخصص: back-end developer , switching to AI

@ham.sarkhosh
اگر اینطوری مشکلت حل نمی شه کلا از factory ها استفاده نکن . برو توی seed ها و توی یه لوپ یه سری مقادیر رو با همین فیکر فارسی توی دیتابیس insert کن

قاسمی
قاسمی
@a.ghassemi92

تخصص: برنامه نویس

بجای اینکه از این پکیج استفاده کنی میتونی از faker خود لاراول استفاده کنی فقط کافیه بری توی فایل config/app.php و اونجا این مقدار رو تغییر بدی 'faker_locale' => 'fa_IR', اونوقت fakerلاراول برات فارسی میشه

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام