База данных Seeding laravel создаст 50 пользователей и прикрепит отношения к каждому пользователю - PullRequest
0 голосов
/ 13 октября 2019

Я использую

factory(App\User::class, 50)->create()->each(function ($user) {
        $user->posts()->save(factory(App\Post::class)->make());
    });

внутри функции запуска в DatabaseSeeder

, когда я выполняю php artisan db:seed, вывод ниже

Seeding: UsersTableSeeder

   BadMethodCallException  : Call to undefined method App\User::posts()

  at /home/ahmed/myDesgin/laravelApplication/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| }

  Exception trace:

  1   Illuminate\Database\Eloquent\Model::throwBadMethodCallException("posts")
      /home/ahmed/myDesgin/laravelApplication/vendor/laravel/framework/src/Illuminate/Support/Traits/ForwardsCalls.php:36

  2   Illuminate\Database\Eloquent\Model::forwardCallTo(Object(Illuminate\Database\Eloquent\Builder), "posts", [])
      /home/ahmed/myDesgin/laravelApplication/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php:1618

  Please use the argument -v to see more details.

что является причинойэта проблема и как ее решить

Ответы [ 2 ]

0 голосов
/ 13 октября 2019

это моя модель пользователя

<?php

namespace App;

use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;

class User extends Authenticatable
{
    use Notifiable;

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'name', 'email', 'password',
    ];

    /**
     * The attributes that should be hidden for arrays.
     *
     * @var array
     */
    protected $hidden = [
        'password', 'remember_token',
    ];

    /**
     * The attributes that should be cast to native types.
     *
     * @var array
     */
    protected $casts = [
        'email_verified_at' => 'datetime',
    ];
}

и ниже начальных чисел базы данных DatabaseSeeder.php

 <?php

use App\User;
use Illuminate\Database\Seeder;

class DatabaseSeeder extends Seeder
{
    /**
     * Seed the application's database.
     *
     * @return void
     */
    public function run()
    {
        // $this->call(UsersTableSeeder::class);
      /*   $this->call([
            UsersTableSeeder::class,
        ]); */
        factory(User::class, 10)->create()->each(function ($user) {
            $user->posts()->saveMany(factory(Posts::class, 5)->make());
        });
    }
}
0 голосов
/ 13 октября 2019

Я не уверен, поможет ли это вам или нет. Но вы можете попытаться создать пользователей и их посты с такими отношениями:

factory(User::class, 10)->create()->each(function ($user) {
    $user->posts()->saveMany(factory(Posts::class, 5)->make());
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...