我正在尝试将数据库种子添加到我的新数据库表中。
ProductSeeder.php
class ProductSeeder extends DatabaseSeeder {
public function run()
{
$products = array(
array(
'name' => 'DSLR D300S (body only)',
'image' => 'D300S_16_85_front34l_i.jpg',
'stock' => 'Available',
'price'=>'5188.00'
)
);
foreach ($products as $product) {
Product::create($product);
}
}
}
模型/ Product.php
class Product extends Eloquent{
}
然而,当我运行db:seed
时,它会说“调用未定义的方法Product :: create()”。
我该怎么解决?谢谢。
答案 0 :(得分:3)
当依靠模型播种数据库并不是一个特别好的主意时,当您尝试通过存储库对模型进行单元测试(数据库测试)时,这就成了最重要的。
而是使用原始查询构建器(使用流畅的界面)。
DB::table('products')->insert(array(...));
答案 1 :(得分:0)
在Laravel中播种的最佳做法是使用'DB :: table()':
class ProductSeeder extends DatabaseSeeder {
public function run()
{
$products = array(
array(
'name' => 'DSLR D300S (body only)',
'image' => 'D300S_16_85_front34l_i.jpg',
'stock' => 'Available',
'price'=>'5188.00'
)
);
foreach ($products as $product) {
DB::table('products')->insert($products);
}
}
}
答案 2 :(得分:0)
不能说它是你的问题,但由于我的播种机文件中的拼写错误而导致此错误
而不是
Product::create($product);
我有
// note only one semicolon
Product:create($product);
这无论如何肯定会导致同样的错误!
PHP Fatal error: Call to undefined function create()
所以我肯定会建议你再次检查你的代码
此外,我只是扩展了Seeder而不是DatabaseSeeder 所以也试试
class ProductSeeder extends Seeder {
答案 3 :(得分:-1)
Class Product需要有一个方法Create。
class Product extends Eloquent{
public function create($product)
{
// Do something
}
}