2017-11-22 11 views
1

TYPO3 CMS 8.7.8 용 확장 프로그램을 개발 중입니다. query->statement()을 사용하여 단일 테이블의 모든 필드와 다른 테이블의 1 개의 필드를 선택했습니다. 나는 적당한 모델을 가지고 QueryResult을 얻었고 나는 그 1 여분의 필드를 그들에게 더하고 싶습니다. 그게 가능하니?원시 SQL을 사용하여 모델에 단일 필드 추가

답변

2

당신은 정상 JOIN 명령 그래서 당신이 할 수있는가에서 (또한 코드에 당신이 원하는 테이블에 조인 documentation

$result = $query->statement('SELECT * FROM tx_sjroffers_domain_model_offer 
WHERE title LIKE ? AND organization IN ?', array('%climbing%', array(33,47))); 

에서

를 사용 ->statement(...) 방법 및 그에서 SQL 쿼리를 수행 할 수 있습니다 문서)

LEFT JOIN tx_blogexample_person 
ON tx_blogexample_post.author = tx_blogexample_person.uid 

하지만 mysql 쿼리의 원시 데이터로 끝날 것입니다. 객체로 변환하려면 Property Mapper

+0

제 질문은 모델에 여분의 필드를 가져 오는 방법입니다. 필자는 모델을 변경하여 추가 필드를 수용하고 필드에 대한 TCA 구성을 추가했습니다. 이제 모든 것이 잘됩니다. –

+1

@StephanRodemeier 그런 다음 자신 만의 TypeConverter를 만들고 추가 된 필드를 반환 된 모델에 추가 할 수 있습니다. PersistentObjectConverter와 그 유사점을 살펴보십시오. –

0

JOINstatments과 같이 사용하십시오.

$query = $this->createQuery(); 
$sql = 'SELECT single.*,another.field_anme AS fields_name 
     FROM 
      tx_single_table_name single 
     JOIN 
      tx_another_table_name another 
     ON 
      single.fields = another.uid 
     WHERE 
      O.deleted = 0 
     AND O.hidden=0 
     AND O.uid=' . $orderId; 
return $query->statement($sql)->execute();