第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

Laravel:有幾個(gè)種子表屬于使用工廠的關(guān)系

Laravel:有幾個(gè)種子表屬于使用工廠的關(guān)系

PHP
夢(mèng)里花落0921 2023-04-28 13:58:09
長(zhǎng)話短說(shuō):我正在使用 Laravel 和 Eloquent 并嘗試為數(shù)據(jù)庫(kù)播種并將多個(gè)屬于關(guān)系附加到一個(gè)表,但出現(xiàn)錯(cuò)誤:調(diào)用未定義的方法 Illuminate\Database\Eloquent\Relations\BelongsTo::attach()詳細(xì)解釋:我正在使用php 7.1和Laravel 6雄辯。我正在嘗試為測(cè)試數(shù)據(jù)庫(kù)播種。我有以下關(guān)系結(jié)構(gòu):一個(gè)用戶有多個(gè)帖子/一個(gè)帖子屬于一個(gè)用戶一個(gè)類別有多個(gè)帖子/一個(gè)帖子屬于一個(gè)類別用戶模型:class User extends Model{    protected $table = 'users';    public function posts()    {        return $this->hasMany('App\Models\Post');    }} 品類型號(hào):class Category extends Model{    protected $table = 'categories';    public function posts()    {        return $this->hasMany('App\Models\Category');    }}帖子模型:class Post extends Model{    protected $table = 'posts';    public function category()    {        return $this->belongsTo('App\Models\Category');    }    public function user()    {        return $this->belongsTo('App\Models\User');    }}用戶工廠:$factory->define(User::class, function (Faker $faker) {    return [        'id' => $faker->unique()->randomNumber(3),        'name' => $faker->name(),    ];});分類工廠:$factory->define(Category::class, function (Faker $faker) {    return [        'id' => $faker->unique()->randomNumber(3),        'name' => $faker->word(),    ];});郵政工廠:$factory->define(User::class, function (Faker $faker) {    return [        'id' => $faker->unique()->randomNumber(3),        'name' => $faker->realText($maxNbChars = 200, $indexSize = 2),    ];});如果我只有用戶和帖子,我知道我可以通過(guò)以下方式為數(shù)據(jù)庫(kù)播種:public function seed(){    $users = factory(App\User::class, 10)        ->create()        ->each(function ($user) {            $user->posts()->createMany(factory(App\Post::class, 10)->make()->toArray());        });}但顯然這對(duì)我來(lái)說(shuō)行不通。我嘗試了以下方法:public function seed(){    factory(User::class, 10)->create();    factory(Category::class, 10)->create();    factory(Post::class, 100)->create()->each(function ($post){        $post->user()->attach(User::all()->random(1));        $post->category()->attach(Category::all()->random(1));    });}但在這兩種情況下,我都收到錯(cuò)誤:調(diào)用未定義的方法 Illuminate\Database\Eloquent\Relations\BelongsTo::attach()
查看完整描述

1 回答

?
慕田峪9158850

TA貢獻(xiàn)1794條經(jīng)驗(yàn) 獲得超8個(gè)贊

你必須使用associate():


public function seed()

{

    factory(User::class, 10)->create();

    factory(Category::class, 10)->create();

    factory(Post::class, 100)->make()->each(function ($post) {

        $post->user()->associate(User::inRandomOrder()->first());

        $post->category()->associate(Category::inRandomOrder()->first());

        $post->save();

    });

}

還將User::all()->random(1)返回一個(gè)集合而不是模型,這將引發(fā)異常,我將其替換為Model::inRandomOrder()->first(),它將從數(shù)據(jù)庫(kù)中獲取一個(gè)隨機(jī)模型。


從文檔:


更新 belongsTo 關(guān)系時(shí),可以使用 associate 方法。此方法將在子模型上設(shè)置外鍵:


$account = App\Account::find(10);


$user->account()->associate($account);


$user->save();

更新


在您的模型工廠中:


/** @var Factory $factory */

$factory->define(Post::class, function (Faker\Generator $faker) {

    return [

        // not sure why you do this, is it not a autoincrement column?

        'id' => $faker->unique()->randomNumber(3), 

        'name' => $faker->realText($maxNbChars = 200, $indexSize = 2),

        'category_id' => function () {

            if ($category = Category::inRandomOrder()->first()) {

                return $category->id;

            }


            return factory(Category::class)->create()->id;

        },

        'user_id' => function () {

            if ($user = User::inRandomOrder()->first()) {

                return $user->id;

            }


            return factory(User::class)->create()->id;

        },

    ];

});

在你的播種機(jī)中:


public function seed()

{

    factory(User::class, 10)->create();

    factory(Category::class, 10)->create();

    factory(Post::class, 100)->create();

}


查看完整回答
反對(duì) 回復(fù) 2023-04-28
  • 1 回答
  • 0 關(guān)注
  • 128 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)