не может повторяться, т.е у меня есть таблица, в которой такие поля:
id area_id team_id
1 1 1
2 1 1(такого быть не может)
3 1 2 (такое быть может)
4 2 1(такое быть может)
Миграцию сделал, все работает, вручную добавлял дубликаты нельзя вставлять, т.е как выше описал.
Не получается сделать сидер:
пишу так: (возможно слишком сложно придумал)
TeamsAreaFactory.php
<?php
namespace Database\Factories;
use App\Models\TeamsArea;
use Illuminate\Database\Eloquent\Factories\Factory;
/**
* @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\Models\User>
*/
class TeamsAreaFactory extends Factory
{
protected $model = TeamsArea::class;
/**
* Define the model's default state.
*
* @return array<string, mixed>
*/
public function definition(): array
{
$result = [];
$array = [];
for ($i = 0; $i < 10; $i++) {
for ($j = 0; $j < 200; $j++) {
$num1 = rand(1, 100);
$num2 = rand(1, 2000);
$combination = [$num1, $num2];
if (!in_array($combination, $array)) {
$array[] = $combination;
}
}
}
foreach ($array as $pair) {
$num1 = $pair[0];
$num2 = $pair[1];
$result[] = [
'area_id' => $num1,
'team_id' => $num2,
];
}
return $result;
}
}
TeamAreaSeeder.php
<?php
namespace Database\Seeders;
use App\Models\TeamsArea;
use Illuminate\Database\Seeder;
class TeamsAreaSeeder extends Seeder
{
public function run(): void
{
TeamsArea::factory()->times(2000)->create();
}
}
Сейчас у меня такая ошибка и не понимаю почему так, неужели скрипт требует так много памяти?
Ошибка:
Allowed memory size of 134217728 bytes exhausted (tried to allocate 20480 bytes)
at database/factories/TeamsAreaFactory.php:45
41▕ }
42▕
43▕ foreach ($array as $pair) {
44▕ $num1 = $pair[0];
➜ 45▕ $num2 = $pair[1];
46▕
47▕ $result[] = [
48▕ 'area_id' => $num1,
49▕ 'team_id' => $num2,
𝔸ртемий, мы обнаружили что Ваше сообщение больше чем наполовину состоит из кода. Рекомендуем сохранять примеры кода на внешних источниках, например, https://paste.laravel.io
выглядит как пивот для отношений много ко многим... Зачем тебе отдельная модель, фактори и сидер? Почему бы не создать модели Area и Team и не соединить их? https://laravel.com/docs/10.x/eloquent-factories#many-to-many-relationships
нуу, так и есть, там по сути связь многие ко многим
сейчас попробую
Обсуждают сегодня