【发布时间】:2014-12-08 03:34:39
【问题描述】:
我有一个播种机,它是 DatabaseSeeder 中最后一个调用的播种机。当我调用 db:seed 时,出现以下错误:
[Illuminate\Database\QueryException]
SQLSTATE[23000]: Integrity constraint violation: 1451 Cannot delete or update a parent row
: a foreign key constraint fails (`catalara`.`models`, CONSTRAINT `models_manufacturer_id_
foreign` FOREIGN KEY (`manufacturer_id`) REFERENCES `manufacturers` (`id`)) (SQL: delete f
rom `manufacturers`)
[PDOException]
SQLSTATE[23000]: Integrity constraint violation: 1451 Cannot delete or update a parent row
: a foreign key constraint fails (`catalara`.`models`, CONSTRAINT `models_manufacturer_id_
foreign` FOREIGN KEY (`manufacturer_id`) REFERENCES `manufacturers` (`id`))
当我指定要播种的类时,我得到了这个:
[Illuminate\Database\Eloquent\MassAssignmentException]
name
知道如何解决这个问题吗?
在此处查看我的列表和制造商模型类: How to set Eloquent relationship belongsTo THROUGH another model in Laravel?
这是有问题的播种机: 使用 Faker\Factory 作为 Faker;
class ListingsTableSeeder extends Seeder {
public function run()
{
DB::table('listings')->delete();
$faker = Faker::create();
$modelCt = count(Model::all());
$conditions = ['New', 'Used'];
$layouts = ['Owner', 'Charter'];
$hull_configs = ['Monohull', 'Catamaran', 'Trimaran'];
foreach(range(1, 10) as $index)
{
Listing::create([
'name' => ucwords($faker->firstName),
'model_id' => rand(1,$modelCt),
'length' => rand(1,160),
'condition' => array_rand(array_flip($conditions)),
'layout' => array_rand(array_flip($layouts)),
'hull_config' => array_rand(array_flip($hull_configs)),
'created_at' => new DateTime,
'updated_at' => new DateTime
]);
}
}
}
出于某种原因,我只在运行db:seed --class=ListingsTableSeeder 时才让它工作,但在我只运行db:seed 时却没有,即使它是DatabaseSeeder 中调用的最后一个播种器。出现同样的错误。但是当我单独运行它时,在我出于某种原因将protected $guarded = ['id'] 添加到列表模型之后,它就可以工作了。
但我希望它与我的其他播种机一起运行,那为什么不呢?如何取悦呢?
【问题讨论】: