laravel로 자동차 사이트 만들기_Controller_factory

sosoeueun·2021년 11월 26일
0

laravel_car

목록 보기
3/3
post-thumbnail
  public function index()
    {
        /*
           1. DB에서 리스트를 가져온다.
           2. 그 리스트를 블레이드 컴포넌트에게 전달한다.
        */
        $cars = Car::all();
        
    }
코드설명
$cars = Car::latest()->get();사용자가 최신순으로 보고 싶어 할 경우
return view('cars.index', ['cars'=>$cars]);두번째 인자로 들어가는 배열은 동적으로 만들기 위해 들어가는 것이다.

블레이드 컴포넌트 만들기

https://laravel.com/docs/8.x/blade#components

코드설명
php artisan make:component cars/Index폴더이름/클래스이름

클래스파일을 만들고, 안에 블레이드 파일이 생성됨

컨트롤러에서 준 정보를 컴포넌트 클래스에서 받아 줘야함
-> 컴포넌트 클래스 생성자에서 받을 거임

https://laravel.com/docs/8.x/blade#passing-data-to-components

변수를 퍼블릭으로 선언해 두면 클래스파일에 생성자로 받아온 변수를 블레이드 파일에서도 쓸 수 있게 됨

index.blade.php

<div>
    @foreach ( $cars as $car )
        <div>{{ $car->name }}</div>
    @endforeach
</div>

변수 car를 반복해서 출력

안에 내용이 없기 때문에 팩토리를 사용해서 가짜 데이터를 넣어 줌

> php artisan make:factory CarFactory 
<?php
namespace Database\Factories;
use App\Models\Company;
use Illuminate\Database\Eloquent\Factories\Factory;
class CarFactory extends Factory
{
    /**
     * Define the model's default state.
     *
     * @return array
     */
    public function definition()
    {
        $c = new Company();
        $c->name = '현대';
        $c->save();
        return [
            'image'=> $this->faker->name(),
            'company_id'=> $c->id,
            'name'=> $this->faker->name(),
            'year'=> 2021,
            'price'=> 3000,
            'type'=> '세단',
            'style'=> 'SUV',
        ];
    }
}

factory에 어떤 값이 들어가야 하는지 적어주고,

tinker 를 사용해 가짜데이터를 넣어 준다.

php artisan tinker
Car::factory()->count(10)->create();
코드설명
php artisan storage:link두개를 연결 시켜 놓는것
profile
sosoeueun

0개의 댓글