如何在Laravel工厂中过滤查询

时间:2019-08-07 05:15:49

标签: laravel laravel-migrations

我在Listing表中有一个user_id的外键。 在我的ListingFactory中,我可以将随机用户的user_id放在该位置,但是我的用户也有一个is_seller bool。如何做到这一点,以便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数组

2 个答案:

答案 0 :(得分:0)

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

Laravel Collection具有开箱即用的方法random

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

答案 1 :(得分:0)

您可以使用以下内容获取随机ID。

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