【问题标题】:Laravel: Error when run SeederLaravel:运行播种机时出错
【发布时间】:2017-03-20 23:29:35
【问题描述】:

在 laravel 5.3 中使用模型工厂创建表播种器时出现错误,但我不知道这里哪里出错了。

[错误异常] 传递给 Illuminate\Database\Grammar::parameterize() 的参数 1 必须是数组类型,给定字符串,在 D:\Coding\php\laravel\simple-blog\vendor\laravel\framework\src\Illuminate\Database 中调用\Query\Grammars\Grammar.php 在第 660 行并已定义

这是我的代码:

型号:

<?php

namespace app;

use Illuminate\Database\Eloquent\Model;

class Article extends Model
{
   protected $table = 'articles';

}

模型工厂:

$factory->define(app\Article::class, function (Faker\Generator $faker){
  return [
    'title' => $faker->sentences(5),
    'content' => $faker->text(),
    'created_at' => \Carbon\Carbon::now(),
    'updated_at' => \Carbon\Carbon::now()
  ];
});

迁移:

public function up()
{
    Schema::create('articles', function (Blueprint $table) {
        $table->increments('id');

        $table->string('title');
        $table->text('content');

        $table->timestamps();
    });
}

ArticlesTableSeeder:

<?php

use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;
use Faker\Factory as Faker;
use app\Article as Article;

class ArticlesTableSeeder extends Seeder
{
/**
 * Run the database seeds.
 *
 * @return void
 */
  public function run()
  {
    factory(Article::class)->create();
  }
}

【问题讨论】:

  • 从 laravel 5.3 开始,一切都返回一个集合而不是一个数组。这就是为什么你有这个错误。不是很熟悉 factory/faker ,所以不确定应该在哪里添加 ->get() 或 ->all() 但如果你在集合上这样做应该可以解决它。

标签: php laravel data-migration faker


【解决方案1】:

'title' =&gt; $faker-&gt;sentences(5), 生成包含 5 个值的数组。在 return 之前制作 var 并在其中连接这些句子。

或者sentences(5, true);会为你生成5句文本。

【讨论】:

  • 非常感谢。我把它改成了句子(5,true) 现在可以用了
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-11-27
  • 2019-10-06
  • 1970-01-01
  • 2014-12-08
  • 2014-09-05
  • 2021-01-27
  • 2017-08-21
相关资源
最近更新 更多