hamed sarkhosh
4 سال پیش توسط hamed sarkhosh مطرح شد
10 پاسخ

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

دوستان من دارم از یه پکیج فارسی برای 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


ثبت پرسش جدید
HRH
تخصص : back-end developer , switching...
@h.r.hassani 4 سال پیش مطرح شد
0

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


hamed sarkhosh
تخصص : برنامه نویس
@ham.sarkhosh 4 سال پیش مطرح شد
0

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


HRH
تخصص : back-end developer , switching...
@h.r.hassani 4 سال پیش مطرح شد
0

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

use Ybazli\Faker\Faker as Faker;

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

use Ybazli\Faker\Faker as farsiFaker;

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


hamed sarkhosh
تخصص : برنامه نویس
@ham.sarkhosh 4 سال پیش مطرح شد
0

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


HRH
تخصص : back-end developer , switching...
@h.r.hassani 4 سال پیش مطرح شد
0

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

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

Ar4min
تخصص : Backend Developer
@ar4min 4 سال پیش مطرح شد
0

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

Ybazli\Faker\FakerServiceProvider::class,

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

'Faker' => Ybazli\Faker\Facades\Faker::class,

hamed sarkhosh
تخصص : برنامه نویس
@ham.sarkhosh 4 سال پیش مطرح شد
0

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


hamed sarkhosh
تخصص : برنامه نویس
@ham.sarkhosh 4 سال پیش مطرح شد
0

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


HRH
تخصص : back-end developer , switching...
@h.r.hassani 4 سال پیش مطرح شد
-1

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


قاسمی
تخصص : برنامه نویس
@a.ghassemi92 2 سال پیش مطرح شد
0

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


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

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