상품목록(제품)
패키지
패키지 정보 테이블(package_data)입니다.
id(자체 증가 ID)
이름
...
id(자체 증가 ID)
제목(패키지명)
....
id(자체 증가 ID)
product_id(제품 ID)
package-id(패키지 ID)
product_num(제품수)
...
한 패키지에 여러 개의 상품이 들어있습니다. 패키지 테이블과 패키지 정보 테이블을 하나의 테이블에 배치할 수도 있었지만, 중복되는 데이터를 줄이기 위해 패키지 테이블을 단순히 세로로 나누었습니다.
위의 경우, 패키지 A에 A제품이 몇 개 포함되어 있는지 알고 싶습니다. 그렇다면 모델에서 관계를 정의하는 방법은 무엇입니까?
위의 상황에서 A제품, B제품 등이 패키지 A와 패키지 B에 총 몇 개가 사용되는지 알고 싶습니다. 그러면 어떻게 운영해야 할까요?
ps: 위의 질문들은 공식문서를 통해 읽어보았으나 제 IQ가 너무 낮아서 이해가 불분명하여 조언을 구하려고 왔습니다.
상품목록(제품)
패키지
패키지 정보 테이블(package_data)입니다.
id(자체 증가 ID)
이름
...
id(자체 증가 ID)
제목(패키지명)
....
id(자체 증가 ID)
product_id(제품 ID)
package-id(패키지 ID)
product_num(제품 수)
...
한 패키지에 여러 개의 상품이 들어있습니다. 패키지 테이블과 패키지 정보 테이블을 하나의 테이블에 배치할 수도 있었지만, 중복되는 데이터를 줄이기 위해 패키지 테이블을 단순히 세로로 나누었습니다.
위의 경우, 패키지 A에 A제품이 몇 개 포함되어 있는지 알고 싶습니다. 그렇다면 모델에서 관계를 정의하는 방법은 무엇입니까?
위의 상황에서 A제품, B제품 등.. 패키지 A와 B에 총 몇 개의 제품이 사용되는지 알고 싶습니다. 그러면 어떻게 운영해야 할까요?
ps: 위의 질문들은 공식문서를 통해 읽어보았으나 제 IQ가 너무 낮아서 이해가 불분명하여 조언을 구하려고 왔습니다.
에헴~ 드디어 문서에서 답을 찾았네요. 여기 링크를 클릭하세요. 직접 보려면 "중첩된 즉시 로딩" 섹션을 검색해 보세요.
구체적인 과정을 알려주세요:
<code class="php">public function hasManyData() { return $this->hasMany(PackageData::class, 'package_id', 'id'); }</code>
<code class="php">public function BelongsToProduct() { return $this->belongsTo(Product::class, 'product_id', 'id'); }</code>
<code class="php">$packageList = Package::with('hasManyData', 'package_data.BelongsToProduct')->get();</code>
완료되었습니다!
ps: 동료가 제공한 방법은 대략 다음과 같습니다.
<code class="php">$packageList = Package::with('hasManyData')->get(); foreach( $packageList as $key => $val ) { ... $productList = PackageData::with('BelongsToProduct')->where(...)->get(); ... }</code>
공연이 형편없는 것 같아요~더 이상 공부하고 싶지 않아요! 머리가 좀 뜨거워서 쓴 내용이 좀 지저분합니다. 틀린 내용이 있으면 정정해 주시기 바랍니다. 이번 호를 시청해주신 모든 분들께 감사드립니다~