내 Yii2에는 테이블과 관계 설정이 있습니다. 테이블의동일한 데이터를 표시하는 격자보기의 Yii2 foreach 루프
목록 :
- 사용자 테이블 -> 외래 키는 다음과 같습니다 COMPANY_ID.
- Facility_table -> 외래 키 : company_id.
- Area_table -> 외래 키 : facility_id.
- productinestable -> 외래 키 : product_id 및 area_id
- producttable ->이 differnet foreign key가 있습니다.이 질문과 관련이 없습니다.
이제이 사용자에게 속한 제품이있는 사용자를 표시하고 싶습니다. 나는 그것을 할 수있다.
Productlines 테이블에는 internal_code라는 필드가 있습니다. 제품 인덱스 페이지의 area_d를 기준으로이 내부 코드를 표시하려고합니다.
데이터를 순환하여 내부 코드를 표시하면 첫 번째 internal_code가 사용되고 나머지 internal_code는 동일한 데이터가 표시됩니다.
내 코드는 다음과 같습니다. 내 product.php 인덱스 페이지 격자에서 모델
public function getFacilitiesID()
{
$ids = [];
$facilityID = Facility::find()->where(['company_id' => \Yii::$app->user->identity->company_id])->all();
foreach ($facilityID as $facID){
$ids[] = $facID->facility_id;
}
return $ids;
}
public function getAreaID()
{
$ids = [];
$areaID = Area::find()->where(['facility_id' => $this->getFacilitiesID()])->all();
foreach ($areaID as $arID){
$ids[] = $arID->area_id;
}
return $ids;
}
public function getInternalCode()
{
$ids = [];
$internalCode = Productlines::find()->where(['area_id' => $this->getAreaID()])->all();
foreach ($internalCode as $intCode){
$ids[] = $intCode;
}
var_dump($ids); exit();
return $ids;
}
public function listen()
{
$model = $this->getInternalCode();
// var_dump($mod->getIntern $mod->getInternalCode();
$provider = new \yii\data\ArrayDataProvider([
'allModels' => $model,
'pagination' => [
'pageSize' => 10,
],
]);
return $provider->getModels();
}
내 코드를 볼 수있는
은 다음과 같습니다
[
'label' => 'Internal Code',
'format' => 'raw',
'value' => function ($data) {
$img ='';
foreach ($data->listen() as $key){
$img = $img.$key->internal_code;
}
return $img;
}
],
사람은 findout 수 무슨 해결책?
getInternalCode() 함수를 var_dump하면 예상대로 표시되지만 그리드보기에서는 적절히 표시되지 않습니다.
는
"적절히 표시하지 않음"이란 의미는 무엇입니까? 잘못된 데이터입니까? 빈? Charset? – Clyff
제품 라인 테이블에 두 개의 internal_code fireld가 있습니다 ... 두 개의 외래 키 .. product_id와 area_id ... 예를 들어 제품 라인 테이블의 5 개의 다른 열에 대해 product_id를 1로 가질 수 있습니다. 동일한 product_id 다른 area_id를 갖습니다. 이제 internal_code를 얻으려고 시도 할 때 area_id 및 product-id와 충돌하고 내부 코드를 뒤범벅. –