2016-08-23 3 views
-1

Bin Abfrage durchführen, und ich möchte die entsprechenden Datensätze in sqldataProvider in yii2Erste verwandte Modelle in sqlDataProvider in yii2

Dies ist zu bekommen, was ich

 $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, 
     ], 
    ]); 

versucht haben, wenn ich ausführen

var_dump ($ dataProvider-> getModels()); Dies gibt immer einen Fehler von Call auf eine Elementfunktion getRelatedRecords Es alle Datensätze zurückgibt, aber wenn ich

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

versuchen() auf Array

Wie kann ich den verknüpften Datensatz

+0

Was wird 'var_dump ($ data);' ausgeben? Eine Anordnung? –

+0

Ja gibt ein Array zurück –

+0

Sie können nicht auf die Beziehungen des Modells zugreifen, als wäre es eine Instanz von ActiiveRecord, da $ data keine Instanz von ActiveRecord ist. Wenn Sie SqlDataProvider verwenden, gibt $ dataProvider-> getModels() die Liste der Arrays und nicht die Liste der Modelle zurück. –

Antwort

0

zugreifen sollten Sie verwenden

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

und im $ dat Sie Dosen sehen easly das Sie dieses Muster haben

model[i]->attri1; 
model[i]->attr2; 
..... 
model[i]->attrN; 
Verwandte Themen