【问题标题】:How to filter query in Laravel Factories如何在 Laravel 工厂中过滤查询
【发布时间】:2019-12-14 16:13:40
【问题描述】:

我的清单表中有一个 user_id 的外键。 在我的 ListingFactory 中,我可以将随机用户的 user_id 放在那个位置,但我的用户也有一个 is_seller 布尔值。我怎样才能做到这一点,以便我的 ListingFactory 中的查询只给我一个 is_seller=true 的用户数组? 到目前为止,这是我的代码:

$factory->define(Listing::class, function (Faker $faker) {
    $randomSellerId = \App\User::where('is_seller', true)->pluck('id')->toArray();
    return [
        'seller_id' => $faker->randomElement($randomSellerId),
    ];
});

此代码仍将所有用户(包括 is_seller=false 的用户)放入 $randomSellerId 数组中

【问题讨论】:

    标签: laravel laravel-migrations


    【解决方案1】:

    您可以使用以下方法获取随机 id。

    $randomId = \App\User::where('is_seller', true)->inRandomOrder()->value('id')
    

    【讨论】:

      【解决方案2】:

      您不需要将集合转换为数组

      Laravel Collection 有开箱即用的方法random

      $factory->define(Listing::class, function (Faker $faker) {
          $allSellerId= \App\User::where('is_seller', true)->pluck('id');
          return [
              'seller_id' => $allSellerId->random(),
          ];
      });
      

      【讨论】:

      • 谢谢,我不知道,但它仍然在外键中添加了 is_seller=false 用户的 Seller_ids。
      猜你喜欢
      • 2023-03-30
      • 2020-08-30
      • 2020-03-16
      • 2014-10-18
      • 2016-01-09
      • 2021-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多