当我尝试运行种子时出现错误。
这是错误:
在供应商/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/QueriesRelationships.php:49 45| $method = $this->canUseExistsForExistenceCheck($operator, $count) 46| ?'getRelationExistenceQuery' 47 | : 'getRelationExistenceCountQuery'; 48|
49| $hasQuery = $relation->{$method}( 50| $relation->getRelated()->newQueryWithoutRelationships(), $this 51| ); 52| 53| // 接下来我们将调用任何给定的回调作为“匿名”范围,以便他们可以获得
+3 vendor frames
Run Code Online (Sandbox Code Playgroud)
4 数据库/工厂/UserFactory.php:59 Illuminate\Database\Eloquent\Model::__callStatic()
+6 vendor frames
Run Code Online (Sandbox Code Playgroud)
11 [内部]:0 Illuminate\Database\Eloquent\FactoryBuilder::Illuminate\Database\Eloquent{closure}()
这是工厂:
use App\User;
use App\Category;
use App\Product;
use App\Transaction;
use App\Seller;
use Faker\Generator as Faker;
use Illuminate\Support\Str;
$factory->define(User::class, function (Faker $faker) {
static $password;
return [
'name' => $faker->name,
'email' => $faker->unique()->safeEmail,
'email_verified_at' => now(),
'password' => $password ?: $password = bcrypt('secret'),
'remember_token' => Str::random(10),
'verified' => $verificado = $faker->randomElement([User::USUARIO_VERIFICADO, User::USUARIO_NO_VERIFICADO]),
'verification_token'=> $verificado == User::USUARIO_VERIFICADO ? null : User::generarVerificationToken(),
'admin' => $faker->randomElement([User::USUARIO_ADMINISTRADOR, User::USUARIO_REGULAR]),
];
});
$factory->define(Category::class, function (Faker $faker) {
return [
'name' => $faker->word,
'description'=> $faker->paragraph(1),
];
});
$factory->define(Product::class, function (Faker $faker) {
return [
'name' => $faker->name,
'description'=> $faker->paragraph(1),
'quantity'=> $faker->numberBetween(1, 10),
'status'=> $faker->randomElement([Product::PRODUCTO_DISPONIBLE, Product::PRODUCTO_NO_DISPONIBLE]),
'image'=> $faker->randomElement(['1.jgp', '2.jgp', '3.jgp']),
'seller_id'=> User::all()->random()->id,
];
});
$factory->define(Transaction::class, function (Faker $faker) {
$vendedores= Seller::has('products')->get()->random();
$comprador= User::all()->except($vendedores->id)->random();
return [
'quantity'=> $faker->numberBetween(1, 3),
'buyer_id'=> $comprador->id,
'product_id'=> $vendedores->products->random()->id,
];
});
Run Code Online (Sandbox Code Playgroud)
这是种子:
use Illuminate\Database\Seeder;
use App\User;
use App\Category;
use App\Product;
use App\Transaction;
public function run()
{
DB::statement('SET FOREIGN_KEY_CHECKS = 0');
User::truncate();
Product::truncate();
Category::truncate();
Transaction::truncate();
DB::table('category_product')->truncate();
$cantidadusuarios= 200;
$cantidadcategorias= 30;
$cantidadproductos= 1000;
$cantidadtransacciones= 1000;
factory(User:: class, $cantidadusuarios)->create();
factory(Category:: class, $cantidadcategorias)->create();
factory(Product:: class, $cantidadtransacciones)->create()->each(
function($producto)
{
$categorias= Category::all()->random(mt_rand(1, 5))->pluck('id');
$producto->categories()->attach($categorias->first());
}
);
factory(Transaction:: class, $cantidadtransacciones)->create();
}
Run Code Online (Sandbox Code Playgroud)
Hea*_*man 25
就我而言,因为我显然不是很聪明,所以我得到了这个错误,因为在我的关系函数中我刚刚做了$this->belongsTo(TheModel::class);并且忘记了实际返回它。
小智 2
我认为我们正在 Udemy 上做同样的课程。我遇到了这个问题,在我的例子中,问题出在卖方模型中,实际上,当某些模型关系与数据库级别(在您的迁移中)不同时,就会出现此问题。因此,请检查卖家型号并确保您有
public function products() {
return $this->hasMany(Product::class);
}
Run Code Online (Sandbox Code Playgroud)
里面还有其他模型。
| 归档时间: |
|
| 查看次数: |
11555 次 |
| 最近记录: |