我在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();
}
}
模型工厂:
$factory->define(App\Models\News::class, function (Faker\Generator $faker)
{
static $password;
$faker = $faker->create('zh_TW');
return [
'news_title' => $faker->sentence(),
'news_content' => $faker->paragraph(),
'news_author' => $faker->name(),
'news_pageviews' => $faker->numberBetween(1, 100),
'news_file' => ' ',
'news_img' => $faker->imageUrl($width, $height, 'business'),
'created_at' => $faker->dateTimeBetween('2012', 'now', 'zh_TW'),
'updated_at' => $faker->dateTimeBetween('2015', 'now', 'zh_TW')
];
});
NewsTableSeeder:
<?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();
}
}
答案 0 :(得分:0)
$ faker = $ faker-&gt;创建(&#39; zh_TW&#39;);
错误消息表示此代码错误。
您使用此代码的目的是什么?
答案 1 :(得分:0)
我无法在没有看到错误的情况下告知100%,但我相信create()
对象上没有$faker
方法。
我相信你的意思是:
$factory->define(App\Models\News::class, function (Faker\Generator $faker)
{
static $password;
$faker = \Faker\Factory::create('zh_TW'); // change to this
return [
...
];
}
我只想创建一个新的faker生成器(\ Faker \ Generator),它从调用\Faker\Factory::create($locale)
返回并使用它。否则,我相信你的下一个最佳选择是覆盖Laravel实例化传递给回调的\Faker\Generator $faker
对象的任何地方,但如果Laravel没有提供干净的方法,那么这可能会变得很糟糕。
create()
方法是对\Faker\Factory
方法的静态调用。它接受语言环境作为参数,并使用en_US
作为默认语言环境。