Support
Quality
Security
License
Reuse
kandi has reviewed laravel and discovered the below as its top functions. This is intended to give you an instant insight into laravel implemented functionality, and help decide if they suit your requirements.
Get all kandi verified functions for this library.
Get all kandi verified functions for this library.
Simple, fast routing engine.
Powerful dependency injection container.
Multiple back-ends for session and cache storage.
Expressive, intuitive database ORM.
Database agnostic schema migrations.
Robust background job processing.
Real-time event broadcasting.
See all related Code Snippets
QUESTION
Call to undefined method App\Models\Category::factory() laravel
Asked 2022-Mar-31 at 13:28I have the error stated above, and here is the copy log
php artisan db:seed
BadMethodCallException
Call to undefined method App\Models\Category::factory()
at vendor/laravel/framework/src/Illuminate/Support/Traits/ForwardsCalls.php:50
46▕ * @throws \BadMethodCallException
47▕ */
48▕ protected static function throwBadMethodCallException($method)
49▕ {
➜ 50▕ throw new BadMethodCallException(sprintf(
51▕ 'Call to undefined method %s::%s()', static::class, $method
52▕ ));
53▕ }
54▕ }
• Bad Method Call: Did you mean App\Models\Category::toArray() ?
+3 vendor frames
4 database/seeders/DatabaseSeeder.php:38
Illuminate\Database\Eloquent\Model::__callStatic()
+22 vendor frames
27 artisan:37
Illuminate\Foundation\Console\Kernel::handle()
Here is the databaseseeder.php class since the error is there:
<?php
namespace Database\Seeders;
use App\Models\Category;
use App\Models\Product;
use App\Models\Transaction;
use App\Models\User;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
class DatabaseSeeder extends Seeder
{
/**
* Seed the application's database.
*
* @return void
*/
public function run()
{
// \App\Models\User::factory(10)->create();
DB::statement('SET FOREIGN_KEY_CHECKS=0');
User::truncate();
Category::truncate();
Product::truncate();
Transaction::truncate();
DB::table('category_product')->truncate();
$cantidadUsuarios = 200;
$cantidadCategories = 30;
$cantidadProductos = 1000;
$cantidadTransacciones = 1000;
\App\Models\User::factory()->count($cantidadUsuarios)->create();
\App\Models\Category::factory()->count($cantidadUsuarios)->create();
\App\Models\Product::factory()->count($cantidadTransacciones)->create()->each (
function ($producto) {
$categorias = Category::all()->random(mt_rand(1, 5))->pluck('id');
$producto->categories()->attach($categorias);
}
);
\App\Models\Transaction::factory()->count($cantidadTransacciones)->create();
}
}
There is the error line:
\App\Models\Category::factory()->count($cantidadUsuarios)->create();
Here we got the category class:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Category extends Model
{
public $table = "categories";
protected $fillable = [
'name',
'description',
];
}
Here we got the category factory:
<?php
namespace Database\Factories;
use App\Models\Category;
use Illuminate\Database\Eloquent\Factories\Factory;
class CategoryFactory extends Factory
{
/**
* The name of the factory's corresponding model.
*
* @var string
*/
protected $model = Category::class;
/**
* Define the model's default state.
*
* @return array
*/
public function definition()
{
return [
//
'name' => $this->faker->word,
'description' => $this->faker->paragraph(1),
];
}
}
Here is the category migration:
<?php
use App\Models\Product;
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateCategoriesTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('categories', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('description', 1000);
$table->integer('quantity')->unsigned();
$table->string('status')->default(Product::PRODUCTO_NO_DISPONIBLE);
$table->string('image');
$table->integer('seller_id')->unsigned();
$table->timestamps();
$table->foreign('seller_id')->references('id')->on('users');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('categories');
}
}
I am posting all you need since I am new to this and I cannot find the problem.
ANSWER
Answered 2021-Aug-01 at 00:51You need to use the factory trait for the model to have the factory()
method available.
class Category extends Model
{
use HasFactory;
...
}
Community Discussions, Code Snippets contain sources that include Stack Exchange Network
No vulnerabilities reported
Save this library and start creating your kit
See Similar Libraries in
Save this library and start creating your kit
Open Weaver – Develop Applications Faster with Open Source