現在、私のModelFactory.phpには、次のものが含まれています。
$factory->define(App\Reply::class, function (Faker\Generator $faker) {
return [
'thread_id' => 1,
'user_id' => 1,
'body' => $faker->paragraph
];
});
Userテーブルに既に格納されているユーザーIDの1つからランダムなuser_idを生成したいと思います。コードへのデータ出力を適切に表示する方法がわからないので困惑しており、LaravelでランダムなユーザーIDを選択して挿入できるようにするにはどうすればよいでしょうか。データベース。ありがとう!:)
以下をお試しください。
use App\User; // Assuming this is your User Model class with namespace.
$factory->define(App\Reply::class, function (Faker\Generator $faker) {
return [
'thread_id' => 1,
'user_id' => User::all()->random()->user_id,
'body' => $faker->paragraph
];
});
これにより、テーブルからすべてのユーザーデータが取得され、ランダムにIDが選択されることに注意してください。したがって、テーブルに大量のデータがある場合は、お勧めしません。代わりに、テストケースで、新しいユーザーを(独自のファクトリを介して)作成し、上記のファクトリから生成されたReplyオブジェクトにIDを割り当てることができます。
または、上記のファクトリ定義で特定のユーザーを照会することもできます。
'user_id' => User::where('username', 'like', '[email protected]')->get()->random()->user_id
DBにテストユーザーを設定している場合、これによりすべてのユーザーデータの取得が回避されます。
_Illuminate\Database\Eloquent\Model
_を拡張するクラスは、これを実行できます。
_User::inRandomOrder()->first()
_
または、3つのアイテムのコレクションを取得するには:
_User::inRandomOrder()->limit(3)->get()
_
これは、最初にすべてのユーザーを照会する必要があるUser::all()->first()
を使用するよりも効率的です。
あなたのIDE(PhpStormのような)はおそらくこれがオプションであると激しく混乱するでしょう。
次も参照してください: Laravel-Eloquent or Fluent random row
その 'user_id'のようには機能しません。
User::all()->random()->user_id
しかし、それはそれがどのように機能するかです:
User::all()->random()->id