Laravel工厂|未指定映射

时间:2017-11-06 18:10:34

标签: php laravel laravel-5

我正在尝试使用faker为名为产品的模型创建一些模拟数据来测试Scout& ElasticSearch但不幸的是,我收到了一个错误。当我在factory(App\Product::class, 200)->create()内使用php artisan tinker生成数据时,我收到以下错误:LogicException with message 'Nothing to update: the mapping is not specified.'我应该查看其他文件的任何指针

App> Product.php

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use ScoutElastic\Searchable;

class Product extends Model {

use Searchable;

protected $indexConfigurator = ProductIndexConfigurator::class;


protected $fillable = ['sku', 'name', 'type', 'price', 'upc', 'category', 'shipping'
, 'description', 'manufacturer', 'model', 'url', 'image'];

    public function products ()
    {
        return $this->belongsTo('App\Product');
    }

}

ProductFactory.php

<?php

$factory->define(App\Product::class, function (Faker\Generator $faker) {
    return [
      'sku' => $faker->randomDigit,
      'name' => $faker->name,
      'type' => $faker->name,
      'price' => $faker->randomDigit,
      'upc' => $faker->randomDigit,
      'category' => $faker->name,
      'shipping' => $faker->randomDigit,
      'description' => $faker->name,
      'manufacturer' => $faker->name,
      'model' => $faker->name,
      'url' => $faker->url,
      'image' => $faker->url,
    ];
});

迁移 - create_products_table.php

<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateProductTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
      Schema::create('product', function(Blueprint $table) {
                  $table->increments('id');
                  $table->string('sku');
                  $table->string('name');
                  $table->string('type');
                  $table->string('price');
                  $table->string('upc');
                  $table->string('category');
                  $table->string('shipping');
                  $table->string('description');
                  $table->string('manufacturer');
                  $table->string('model');
                  $table->string('url');
                  $table->string('image');
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('product');
    }
}

1 个答案:

答案 0 :(得分:0)

您的代码没问题,对我有用,您只是缺少产品型号上的属性$ table和$ timestamps:

String idBefore = db.collection("YourCol").document().getId();