나는 다음과 같은 테이블이 있습니다Yii2 열망로드 집계
- 내용 - ID (PK), 제목, ... 다른 분야 ...
- content_category을 - content_id (FK to content), category_id (FK to content)
콘텐츠 부분이 has_many이고 범주가 콘텐츠이기도합니다.
내용에서 나는 다음과 같은 코드가 있습니다 백엔드 내 그리드 뷰
public function getCategories()
{
return $this
->hasMany(Category::className(), ['id' => 'category_id'])
->viaTable('content_category', ['content_id' => 'id']);
}
public function getCategoriesCsv(){
...
}
을, 나는 쉼표 각 콘텐츠 범주로 구분 된 목록을 표시하고 싶습니다.
이 정보를 별도로 선택할 수 있다는 것을 알고 있지만 가능한 경우 기존 쿼리를 사용하고 기존 쿼리를 사용하고 싶습니다. 나는 이것을 neatened, @IStranger에
public function getCategoriesCsv(){
$categoryTitles = [];
foreach ($this->categories as $category){
$categoryTitles[] = $category->title;
}
return implode(', ', $categoryTitles);
}
감사 : 범주
사용 익명 함수를 사용하여 더 귀여운 상태가 최적화 될 수있다. –
@InsaneSkull,하지만 각 행에 대해 별도의 쿼리를 실행합니다. – Arth
'joinWith()'또는'with()'를 사용하면 실제로는 그렇지 않습니다. 그냥 루프를 사용합니다. gridview 및 dataProvider 출력으로 질문을 업데이트하는 경우 내가 도움이 될 수 있습니다. –