| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
Tags
- laravel migration
- laravel factory
- laravel docker
- laravel 공부
- php artisan
- laravel faker
- 배열 분해 할당
- 제이펍 출판
- mysql
- 황반석 옮김
- 자바스크립트 배열 할당
- laravel migrate 오류
- Laravel
- 핵심만 골라 배우는 SwiftUI 기반의 iOS 프로그래밍
- 자바스크립트 객체
- laravel seeder
- 라라벨 시더
- 객체
- 닐 스미스 지음
- 자바스크립트
- 생활코딩
- laravel sail
- 자바스크립트 객체 만들기
- 라라벨 파커
- Docker
- php laravel
- 기획자랑 사이좋게 지내고 싶다
- 객체지향
- 라라벨 팩토리
- artisan migrate
Archives
- Today
- Total
반응형
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
Tags
- laravel migration
- laravel factory
- laravel docker
- laravel 공부
- php artisan
- laravel faker
- 배열 분해 할당
- 제이펍 출판
- mysql
- 황반석 옮김
- 자바스크립트 배열 할당
- laravel migrate 오류
- Laravel
- 핵심만 골라 배우는 SwiftUI 기반의 iOS 프로그래밍
- 자바스크립트 객체
- laravel seeder
- 라라벨 시더
- 객체
- 닐 스미스 지음
- 자바스크립트
- 생활코딩
- laravel sail
- 자바스크립트 객체 만들기
- 라라벨 파커
- Docker
- php laravel
- 기획자랑 사이좋게 지내고 싶다
- 객체지향
- 라라벨 팩토리
- artisan migrate
Archives
- Today
- Total
java,javascript,android,php,sql,공부용,메모용
라라벨11 - Laravel Factory, Farker 사용방법 본문
반응형
Laravel Factory 완전 정리 (생성 흐름 + 오류 해결)
🚀 시작 전 (Laravel Sail 실행)
Laravel 작업을 시작하기 전에 항상 아래 명령어로 환경을 실행합니다.
cd ~/documents/laravel/laravel_docker/sample
alias sail="./vendor/bin/sail"
sail up -d
👉 Docker 기반 Laravel 환경 실행
👉 이후 모든 artisan 명령어는 sail을 사용해서 실행
📌 1. 모델 클래스 만들기
✔ 모델만 생성
sail artisan make:model Publisher
👉 생성 파일:
app/Models/Publisher.php
👉 이 방법은 모델만 생성되며
Factory, Migration은 따로 만들어야 합니다
📌 2. Factory 클래스 만들기 + 데이터 정의
✔ Factory 생성
sail artisan make:factory PublisherFactory
👉 생성 파일:
database/factories/PublisherFactory.php
✔ 데이터 투입 처리 작성
public function definition(): array
{
return [
'name' => $this->faker->company . ' Pub.',
'isbn' => $this->faker->isbn13(),
'address' => $this->faker->address,
'created_at' => now(),
'updated_at' => now(),
];
}
👉 DB 컬럼과 동일하게 작성해야 함
📌 3. 모델 + Factory 한 번에 생성하는 방법
sail artisan make:model Publisher -mf
👉 한 번에 생성됨:
- Model
- Migration
- Factory
✔ 장점
- HasFactory 자동 포함
- 파일 간 연결 실수 방지
- 실무에서 가장 많이 사용하는 방식
📌 4. DatabaseSeeder에서 Factory 호출
파일:
database/seeders/DatabaseSeeder.php
\App\Models\Publisher::factory()->count(10)->create();
📌 실행 방법
sail artisan migrate:fresh --seed
👉 DB 초기화 + 데이터 생성

❗ 오류가 발생하는 이유 (점검 포인트)
1️⃣ 모델과 Factory 연결 안 됨
use Illuminate\Database\Eloquent\Factories\HasFactory;
class Publisher extends Model
{
use HasFactory;
}
👉 이 설정이 없으면 Factory 사용 불가
2️⃣ DB 컬럼과 Factory 데이터 불일치
👉 예:
- DB에는 있는데 Factory에 없음
- Factory에는 있는데 DB에 없음
👉 대표 오류:
Unknown column 'name'
3️⃣ 캐시 문제
👉 코드 수정했는데도 이전 코드 기준으로 동작할 때 발생
✔ 이런 상황에서 사용
- 코드 수정했는데 동일 오류 반복
- 분명히 고쳤는데 반영 안 됨
✔ 해결 명령어
sail artisan optimize:clear
💡 팁
✔ 팁 1. 생성은 가능하면 한 번에
sail artisan make:model XXX -mf
👉 연결 문제 예방
✔ 팁 2. Factory 작성 전에 DB 구조 확인
DESC 테이블명;
👉 컬럼 기준으로 작성하면 오류 감소
✔ 팁 3. 데이터 확인은 세로 출력
SELECT * FROM publishers\G
👉 긴 데이터 확인에 유용
🚀 한 줄 핵심
Factory는
Model + Factory + DB 구조가 정확히 맞아야 정상 동작한다
📌 Faker 사용 가능한 주요 기능 정리
이름(속성/함수)코드 예시설명
| name | 'name' => $this->faker->name | 사람 이름 |
| firstName | 'first_name' => $this->faker->firstName | 이름 |
| lastName | 'last_name' => $this->faker->lastName | 성 |
| userName | 'username' => $this->faker->userName | 아이디 |
| 'email' => $this->faker->email | 이메일 | |
| safeEmail | 'email' => $this->faker->safeEmail | 안전한 이메일 (테스트용) |
| password | 'password' => bcrypt('1234') | 비밀번호 (faker 없음, 직접 설정) |
| phoneNumber | 'phone' => $this->faker->phoneNumber | 전화번호 |
| address | 'address' => $this->faker->address | 전체 주소 |
| city | 'city' => $this->faker->city | 도시 |
| postcode | 'postcode' => $this->faker->postcode | 우편번호 |
| country | 'country' => $this->faker->country | 국가 |
| company | 'company' => $this->faker->company | 회사명 |
| jobTitle | 'job' => $this->faker->jobTitle | 직업 |
| sentence | 'title' => $this->faker->sentence | 한 문장 |
| text | 'content' => $this->faker->text | 긴 글 |
| word | 'word' => $this->faker->word | 단어 |
| randomNumber | 'num' => $this->faker->randomNumber() | 랜덤 숫자 |
| numberBetween | 'num' => $this->faker->numberBetween(1, 100) | 범위 숫자 |
| randomFloat | 'price' => $this->faker->randomFloat(2, 1000, 50000) | 소수점 숫자 |
| date | 'date' => $this->faker->date() | 날짜 |
| dateTime | 'created_at' => $this->faker->dateTime() | 날짜 + 시간 |
| boolean | 'is_active' => $this->faker->boolean | true / false |
| uuid | 'uuid' => $this->faker->uuid | 고유 ID |
| url | 'url' => $this->faker->url | 웹사이트 주소 |
| ipv4 | 'ip' => $this->faker->ipv4 | IP 주소 |
| imageUrl | 'image' => $this->faker->imageUrl() | 이미지 URL |
| isbn10 | 'isbn' => $this->faker->isbn10() | 10자리 ISBN |
| isbn13 | 'isbn' => $this->faker->isbn13() | 13자리 ISBN |
📌 사용법 핵심
✔ 기본 구조
return [
'컬럼명' => $this->faker->기능
];
'컬럼명' => $this->faker->기능
];
✔ 함수 vs 속성 차이
타입예시
| 속성 | $this->faker->name |
| 함수 | $this->faker->numberBetween(1, 100) |
📌 실전 예시 (조합)
return [
'name' => $this->faker->name,
'email' => $this->faker->unique()->safeEmail,
'phone' => $this->faker->phoneNumber,
'address' => $this->faker->address,
'price' => $this->faker->randomFloat(2, 1000, 50000),
'isbn' => $this->faker->isbn13(),
];
'name' => $this->faker->name,
'email' => $this->faker->unique()->safeEmail,
'phone' => $this->faker->phoneNumber,
'address' => $this->faker->address,
'price' => $this->faker->randomFloat(2, 1000, 50000),
'isbn' => $this->faker->isbn13(),
];
🚀 한 줄 핵심
👉 Faker는
👉 “컬럼에 맞는 현실적인 데이터를 자동으로 넣어주는 도구”
📌 해결 방법 1 (추천 ⭐)
👉 세로 출력 사용
SELECT * FROM publishers\G
👉 ; 대신 \G 사용
🔍 결과 느낌
❌ 기본 (가로)
| id | name | isbn | address | created_at | ...
👉 너무 길어서 깨짐
⭕ \G 사용 (세로)
*************************** 1. row ***************************
id: 1
name: ABC Pub.
isbn: 9781234567890
address: 서울...
created_at: ...
id: 1
name: ABC Pub.
isbn: 9781234567890
address: 서울...
created_at: ...
👉 훨씬 보기 편함 👍
📌 해결 방법 2
👉 컬럼 줄이기
SELECT id, name FROM publishers;
👉 필요한 것만 보기
📌 해결 방법 3
👉 테이블 구조 확인
DESC publishers;
👉 컬럼 구조만 깔끔하게 확인
📌 해결 방법 4 (꿀팁)
👉 MySQL 출력 폭 조절
터미널 넓히기 (창 늘리기)
👉 이게 의외로 중요함
📌 추천 사용 패턴
SELECT * FROM publishers\G
👉 데이터 확인할 때 무조건 이거 추천
🚀 한 줄 핵심
👉 MySQL 보기 불편하면
👉 ; 말고 \G 써라
반응형
'개발 > php' 카테고리의 다른 글
| 라라벨10 - Laravel Seeder & Faker 정리 (0) | 2026.03.19 |
|---|---|
| 라라벨9 - 마이그레이션 정리 (0) | 2026.03.18 |
| 라라벨8 - Laravel Sail에서 php artisan migrate 오류 해결 방법 (mysql 연결 실패) (0) | 2026.03.18 |
| 라라벨7 - 서비스 컨테이너, 바인드와 리졸브 (0) | 2025.10.15 |
| 라라벨 6 - 라이프 사이클 정리, 엔트리포인트 (HTTP요청 기준 내용) (0) | 2025.10.15 |
Comments