Tuesday, February 28, 2017

How to use modelfactory in seeder in Laravel 5.4

I am using model factory in NewsTableSeeder, but I get this error when I entered db:seed.

I want to know why I can't use create() in my seeder.

Thank you.

Here is my News model:

<?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();
    }
}

Model Factories:

$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();
    }
}




via PH.Chen

Advertisement