Php 如何在Laravel 5.4中的播种机中使用modelfactory

Php 如何在Laravel 5.4中的播种机中使用modelfactory,php,laravel,laravel-5.4,Php,Laravel,Laravel 5.4,我在NewsTableSeeder中使用模型工厂,但当我输入db:seed时,出现了这个错误 我想知道为什么不能在播种机中使用create() 以下是我的新闻模型: <?php namespace App\Models; use Illuminate\Database\Eloquent\Model; class News extends Model { protected $table = 'news'; protected $primaryKey = 'id';

我在NewsTableSeeder中使用模型工厂,但当我输入db:seed时,出现了这个错误

我想知道为什么不能在播种机中使用create()

以下是我的新闻模型:

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;


class News extends Model
{
    protected $table = 'news';
    protected $primaryKey = 'id';

    public function home_news_lists() {
        return $this->select('id', 'news_title', 'news_update')
                    ->orderBy('news_update', 'DESC')
                    ->limit(5)
                    ->get();
    }

    public function lists() {
        return News::all();
    }
}
新闻表种子:

<?php

use Illuminate\Database\Seeder;

class NewsTableSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        factory(App\Models\News::class, 50)->create();
    }
}
$faker=$faker->create('zh_TW')

错误消息说此代码错误


您使用此代码的目的是什么?

我无法100%地说出您所遇到的错误,但我确信,
$faker
对象上没有
create()
方法

我相信你的意思是:

$factory->define(App\Models\News::class, function (Faker\Generator $faker) 
{
    static $password;
    $faker = \Faker\Factory::create('zh_TW');  // change to this

    return [
        ...
    ];
}
我只需要创建一个新的伪造生成器(\faker\generator),它从调用
\faker\Factory::create($locale)
返回,并使用它。否则,我相信您的下一个最佳选择是覆盖Laravel实例化传递到回调中的
\Faker\Generator$Faker
对象的任何位置,但如果Laravel不提供干净的方法,这可能会有问题


create()
方法是对
\Faker\Factory
方法的静态调用。它接受区域设置作为参数,并使用
en_US
作为默认区域设置

你有什么报错提示嘛,请邮递出来你能把错误包括进来吗?我没有发现我的错误信息没有上传。很抱歉
$factory->define(App\Models\News::class, function (Faker\Generator $faker) 
{
    static $password;
    $faker = \Faker\Factory::create('zh_TW');  // change to this

    return [
        ...
    ];
}