2016-08-23 5 views
-1

Am выполнения запроса и я хотел бы получить соответствующие записи в sqldataProvider в yii2Получение связанных моделей в sqlDataProvider в yii2

Это то, что я попытался

 $sql =" 
     SELECT 
    tblpritems.PRlineID 
    , tblpritems.Tracking_Code 
    , tblpritems.Description 
    , tblpritems.Quantity 
    , tblpritems.Unit_Price 
    , tblpritems.Extended_price 
    , tblpritems.PRID 
    , tblpritems.pr_solicitation_id 
    , tblpritems.date_item_received 
    , tblpritems.Quantity_received 
    , tblpritems.Remarks_on_receipt 
    , tblpritems.Received_by 

FROM 
    prts.tblpritems 
    INNER JOIN prts.tblpr 
     ON (tblpritems.PRID = tblpr.PRID) 
    INNER JOIN prts.tblprsolicitations 
     ON (tblprsolicitations.PRID = tblpr.PRID) AND (tblpritems.pr_solicitation_id = tblprsolicitations.pr_solicitation_id) 
    INNER JOIN prts.tblprsuppliers 
     ON (tblprsuppliers.pr_solicitation_id = tblprsolicitations.pr_solicitation_id) 
    INNER JOIN prts.tblpo 
     ON (tblpo.pr_supplier_id = tblprsuppliers.pr_supplier_id) 
    where tblpr.PRID=".$val." and tblpo.PO_Status_ID=7 and item_received_status=0 
    "; 

    $connection = Yii::$app->getDb(); 
    $command = $connection->createCommand($sql); 
    $result = $command->queryAll(); 

    $dataProvider = new SqlDataProvider([ 
     'sql' => $sql, 
     'pagination' => [ 
      'pageSize' => 10, 
     ], 
    ]); 

Когда я выполняю

var_dump ($ dataProvider-> getModels()); возвращает все записи, но когда я пытаюсь

$data = $dataProvider->getModels(); 
    foreach ($data as $dat) { 
     $data = $dat->getRelatedRecords(); 
     var_dump($data); 
    } 

Это всегда возвращает ошибку вызова функции члена getRelatedRecords() на массиве

Как я могу получить доступ к связанной записи

+0

Что делает 'var_dump ($ data);' output? Массив? –

+0

Да возвращает массив –

+0

Вам не удастся получить доступ к отношениям модели, как если бы это был экземпляр ActiiveRecord, потому что $ data не является экземпляром ActiveRecord. Когда вы используете SqlDataProvider, $ dataProvider-> getModels() возвращает список массивов, а не список моделей. –

ответ

0

Вы должны использовать

$data = $dataProvider->models; 
foreach ($data as $dat) { 
    var_dump($dat); 
} 

и в $ ДАТ вы канистры Исли увидеть у вас есть этот шаблон

model[i]->attri1; 
model[i]->attr2; 
..... 
model[i]->attrN; 
Смежные вопросы