【问题标题】:Laravel factory: recycle method not randomize input collectionLaravel 工厂:回收方法不随机化输入集合
【发布时间】:2022-11-27 03:49:03
【问题描述】:

它在文档中说“回收方法还接受现有模型的集合。当向回收方法提供集合时,当工厂需要该类型的模型时,将从集合中选择一个随机模型:”

但是每当我使用可用集合并使用回收方法时,它总是会返回最后一个集合。这是我的种子代码

Product::factory()
    ->count(10)
    ->recycle(AgeGroupMarketplace::all())
    ->state(['age_group_marketplace_id' => AgeGroupMarketplace::factory()])
    ->create();

它总是会在我的年龄组表中使用 age_group_marketplace_id = last age group id 为表产品播种。我想知道这是一个错误还是我在代码中做错了什么?

我希望 age_group_marketplace_id 列根据现有集合是随机的

【问题讨论】:

    标签: laravel laravel-9 laravel-factory


    【解决方案1】:

    我有以下代码并且它有效,它为每个属性使用一个随机的 Zone 和 Person。也许你有一个过时的错误版本的 Laravel 框架,尝试使用 composer update 更新你的包可能会起作用

    $zones = Zone::where('city_id', 2)->get();
        
    $people = Person::factory()->count(10)->create();
        
    Property::factory()
                ->count(50)
                ->recycle($zones)
                ->recycle($people)
                ->state(['zone_id' => Zone::factory(), 'landlord_id' => Person::factory()])
                ->create();
    

    使用 ->get() 而不是 ->all() 检索模型会产生任何变化,也许吧?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-26
      • 2019-11-19
      • 2017-11-05
      • 2019-10-29
      • 2011-11-01
      • 1970-01-01
      • 2018-01-29
      • 2018-07-23
      相关资源
      最近更新 更多