Eloquent 코드북 관계 설정 Best Practice 도움 부탁드립니다.

안녕하세요
현재 3개의 테이블이 있습니다.

1. employees

2. employee_status

4. codes

그리고 위 테이블에 해당하는 모델이
1. Employee (hasMany(App\EmployeeStatus)

  1. EmployeeStatus (belongsTo(App\Employee)
    인사발령내역을 저장하는 테이블이며 5년이상 보관해야 하기 때문에 last() 메써드를 사용하여 최신값을 불러옴
  2. Codes
    View 셀렉트 값생성및 인사발령 내역 테이블에 저장되는 id값을 보관
    로 정의되어 있습니다.

자료들은 삭제시 실제 삭제가 되지 않고 소프트 딜리트 되고있습니다.

각 각의 테이블 구조는 아래와 같습니다.

1. employees table구조

id/lastname/firstname/idnumber/bod

1/ 홍 / 길동 / 1234567 / 770707

2. employees_status

id/ employeeid /business / department / dutyplace / title/ position/

1/ 1/ 1/ 1/1/1/1

3.codes table 구조

id /tablename / fieldname / codenumber/codevalue

1/employee_status/ department / 1/ 경영지원

2/employee_status/ title / 1/ 대리

3/employeestatus/ dutyplace / 1/ 본사


액세스 쓸때 버릇으로 form select 에 들어갈 코드들을 한군데다가 모두 모아놓고 있습니다.
list.view 에서

@foreach ($employees->status as $status)

{{ $employees->status->title }}

@endforeach

위 코드와 엘로퀀트 1:n 모델을 이용해 employee_status 테이블에 저장된 값을 불러오는데 까지는 성공했습니다. Eloquent hasmany 사용
여기서 1에 해당하는 '대리' 라는 값을 불러오려면

<td>
{!! $title = new App\Code !!}
@foreach ($title->where('fieldName','title')->where('code_id',$employee->profiles->last()['title'])->get() as $element)
    {{$element->codeValue}}
@endforeach
</td>

view 에다가 로직을 우겨넣고 있습니다.
코드도 복잡해지고 예시로 든 모델과 비슷한 모델이 더 있습니다.
자산관리라던지 보험관리, 보증관리 계약관리 등
Controller 에서 return view()->with('status') 이런식으로 처리 하고 싶은데

해결방법1.
필드로 사용하고 있는 select 테이블 구조를
title
duty_place
department
형식으로 각각 분리된 테이블로 만들어 각각 관계를 설정한다.
-> 테이블이 너무 많아져서 관리가 어려움
각 테이블마다 뷰페이지 만들어 줘야하는 어려움.

해결방법2.
저장되는 값을 id값이 아닌 code_value 값으로 바꾼다.
->데이터 베이스가 커진다.
호스팅하고 있는 서버 용량이 매우작기 때문에 불가능

요약
view.list 에서 테이블 a에 해당하는 b테이블의 id를 불러옴
b테이블의 id는 c테이블의 id_value에 해당하는 문자열을 반환해야함

a테이블과 b테이블 값은 불러올수 있으나 foreach 안에 foreach 를 사용해야 함
그나마도 불러온 값이 id값이라 사람은 무슨내용인지 알길이 없음
c테이블의 id value 값도 같은 방식으로 불러오자니 foreach 중첩이 3번이 넘게 일어남

간단하게 불러올수 있는 방법이 있는지 궁금합니다.

.

comments powered by Disqus