キーの組み合わせをuniqueにする必要がある。
ポイントは2つのModelのキーのcollectionをcrossJoin()で繋げてるとこ。
use Faker\Generator as Faker;
$factory->define(Model::class, function (Faker $faker) {
$idsA = ModelA::all()->pluck('id');
$idsB = ModelB::all()->pluck('id');
$matrix = $idsA->crossJoin($idsB);
$keypair = $faker->unique()->randomElement($matrix);
return [
'aid' => $keypair[0],
'bid' => $keypair[1],
];
});