-2

저는 A, B, C와 같은 3 개의 테이블을 가지고 있습니다. A와 B는 관계가 있지만 A와 C는 어떤 연결도 가지고 있지 않습니다. B와 C 관련.cakephp3에서 관련 테이블 값을 얻으십시오.

cakephp3에서 인덱스 작업은 A와 B 릴레이션만을 반환합니다. i 테이블 C 데이터를 가져와야합니다.

표 세부 사항 :

  1. Purchase_details
  2. measure_inventories
  3. measurement_lables

Table details image

+1

당신이 질문에 코드를 추가하고 바라 보았다 수 있을까요 [로드 협회 (https://book.cakephp.org/3.0/en/orm/query-builder.html#loading-associations) – Sevvlor

+0

더 자세히 설명해 드리겠습니다. 유용 할 것입니다. – user294095

+0

귀하의 색인 작업은 어디에 있습니까? 그 기능도 게시하십시오. –

답변

1

당신은 관련된 테이블의 데이터를 얻을 수 contain을 사용할 수 있습니다 ..

연결 협회를 원하면 recursive을 사용할 수 있습니다. 당신은 하나 개의 연결로이 원하는 경우 그런데 당신이 시도 할 수 있습니다 :

$data = $this->PurchaseDetails->find('all') 
        ->contain(['MeasurementInventories' => ['MeasurementLables']])->toArray(); 
0

를 사용 할 포함()과 같은 테이블/모델 데이터를 연결하려면 : - 귀하의 요구 사항 경우

$data = $this->PurchaseDetails->find()->contain(['MeasurementInventories' => ['MeasurementLables']])->toArray(); 

다음은 추가 할 수 있습니다 만 measurement_lables에서 데이터를 표시하는 것입니다 선택()처럼 원하는 모델 데이터를 얻을 수 있습니다 : -

$data = $this->PurchaseDetails->find()->contain(['MeasurementInventories' => ['MeasurementLables']])->select(['MeasurementLables.*'])->toArray(); 

참고 : - 당신은 미주리이 있는지 확인해야한다) (포함 사용하는 동안 델은 서로 연관되어있다. 예를 들어 PurchaseDetails에 대한 모델은 MeasurementInventories (belongsTo를, hasMany의, hasOne의 등)

$this->belongsTo('PurchaseDetails', [ 
    'className' => 'MeasurementInventories', 
    'foreignKey' => 'columnName'    
]); 

그리고 MeasurementInventories MeasurementLables와 관련된과 관련되어야한다.

$this->belongsTo('MeasurementInventories', [ 
    'className' => 'MeasurementLables', 
    'foreignKey' => 'columnName'    
]);