2

我有模型活动

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use App\CampaignsTargetGeo;
use App\CampaignsTargetCategory;

class Campaigns extends Model
{

const DEFAULT_MARGINALITY = 1.2;

protected $table = 'campaigns';
public $fillable = [
    'name',
    'url',
    'user_rate_min',
    'user_rate_max',
    'network_rate_min',
    'network_rate_max',
    'daily_limit',
    'hourly_limit',
    'status_id',
    'user_id'
];

和种子活动Seeder

<?php

use Illuminate\Database\Seeder;
use App\Campaigns;

class CampaignsSeeder extends Seeder
{
/**
 * Run the database seeds.
 *
 * @return void
 */
public function run() {
    $campaigns = \DB::table('campaigns')->insert([
        'id'               => 1,
        'name'             => 'test campaign',
        'url'              => 'http://example.com?test=true',
        'user_rate_min'    => '80',
        'user_rate_max'    => '100',
        'network_rate_min' => '100',
        'network_rate_max' => '120',
        'daily_limit'      => '10000',
        'hourly_limit'     => '1000',
        'status_id'        => '1',
        'user_id'          => '1'
    ]);
}
}

和数据库播种器类

<?php

use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;

class DatabaseSeeder extends Seeder
{
/**
 * Run the database seeds.
 *
 * @return void
 */
public function run()
{
    Model::unguard();

     $this->call('UserSeeder');
     $this->call('DictionariesTargetGeoSeeder');
     $this->call('DictionariesTargetCategoriesSeeder');
     $this->call('DictionariesCampaignStatusesSeeder');
     $this->call('CampaignsSeeder');

    Model::reguard();
}

}

当我运行 php artisan db:seed 时,出现此错误

➜  panel git:(master) ✗ pa db:seed
Seeded: UserSeeder
Seeded: DictionariesTargetGeoSeeder
Seeded: DictionariesTargetCategoriesSeeder
Seeded: DictionariesCampaignStatusesSeeder

[Illuminate\Database\QueryException]
SQLSTATE[42P01]: Undefined table: 7 ERROR:  relation "campaigns" does not exist  LINE 1: insert into "campaigns" ("id", "name", "url", "user_rate_min...                      ^ (SQL: insert into "campaigns" ("id", "name", "url", "user_rate_min", "user_rate_max", "network_rate_min", "network_rate_max", "daily_limit", "hourly_limit", "status_id", "user_id") values (1, test campaign, http://example.com80test=true, 100, 100, 120, 10000, 1000, 1, 1, ?))

[PDOException]
SQLSTATE[42P01]: Undefined table: 7 ERROR:  relation "campaigns" does not   exist LINE 1: insert into "campaigns" ("id", "name", "url", "user_rate_min...
                  ^

但是表存在!我签入 psql 控制台。此刻交易可能不会提交吗?

如果我运行➜ panel git:(master) ✗ php artisan db:seed --class=CampaignsSeeder它可以正常工作

为什么?:-)

4

1 回答 1

0

insert()方法需要一个数组数组(每行一个数组),但您要插入一个数组。尝试

$campaigns = \DB::table('campaigns')->insert([
    [
        'id'               => 1,
        'name'             => 'test campaign',
        'url'              => 'http://example.com?test=true',
        'user_rate_min'    => '80',
        'user_rate_max'    => '100',
        'network_rate_min' => '100',
        'network_rate_max' => '120',
        'daily_limit'      => '10000',
        'hourly_limit'     => '1000',
        'status_id'        => '1',
        'user_id'          => '1'
    ]
]);
于 2015-07-09T09:24:10.900 回答