Таблица посева с несколькими отношениями laravel - PullRequest
0 голосов
/ 18 июня 2020

Привет, я новичок в laravel, и я хочу заполнить таблицу несколькими отношениями, такими как

       for ($i=0; $i < 30; $i++) {
        Product::create([
            'title' => $faker->sentence(1),
            'slug' => $faker->slug,
            'subtitle' => $faker->sentence(3),
            'categorie' => $faker->sentence(1),
            'ville' => $faker->sentence(1),
            'description' => $faker->text,
            'price' => $faker->numberBetween(15, 300),
            'duration' => $faker->numberBetween(15, 300),
            'image' => '//imgur.com/a/WhaAC9O'
        ])->categories()->attach([
            rand(1, 4),
            rand(1, 4)
        ])

, но когда я добавляю эту часть, она выдает исключение при заполнении

->villes()->attach([
            rand(1, 1),
            rand(1, 1)
        ])

;

это исключение:

Вызов функции-члена villes () по null

что мне делать?

это Продукт. php

class Product extends Model
{


 public function categories()
{
    return $this->belongsToMany('App\Category');
}

public function villes()
{
    return $this->belongsToMany('App\Ville');
}

}

1 Ответ

0 голосов
/ 18 июня 2020

Я не могу договориться об общем плане посева, посев должен быть больше solid, есть вероятность, что этой категории или категории не существует ...

но для ошибки она появляется потому что метод attach возвращает null

for ($i=0; $i < 30; $i++) {
  $product=  Product::create([
        'title' => $faker->sentence(1),
        'slug' => $faker->slug,
        'subtitle' => $faker->sentence(3),
        'categorie' => $faker->sentence(1),
        'ville' => $faker->sentence(1),
        'description' => $faker->text,
        'price' => $faker->numberBetween(15, 300),
        'duration' => $faker->numberBetween(15, 300),
        'image' => '//imgur.com/a/WhaAC9O'
    ]);
$product->categories()->attach([
            rand(1, 4),
            rand(1, 4)
        ]);
$product->villes()->attach([
            rand(1, 1),
            rand(1, 1)
        ]);
}
...