2016-04-05 35 views
0

için diğer parametrelerle birleştirildiğinde gerçek verileri geri getirmiyor Mobil cihazlara dinlenme api aracılığıyla veri sağlayan bir uygulama yaptım. Anahtarlar (Yabancı/Dizin) ile aralarında kurulan ilişkilere dayanarak çeşitli tablolardan gelen verileri alıyorum.ActiveDataProvider, REST api - Yii2

Tablolardan gerekli verileri almak için ActiveDataProvider kullanıyorum.

return $dataProvider; 

İstediğim edilir:

    ben şöyle ben döndüğünüzde gerektiği gibi
    $dataProvider = new ActiveDataProvider([ 
        'query'=>$query 
    ]); 
    

    Bu

    harika JSON formatında belirlediğim sorgu ve dönen verilere dayanarak çalışan gerçek olduğunu
  • Bu ActiveDataProvider'ın diğer bazı verilerle birlikte verilerini döndürün. Bir nesnede ActiveDataProvider'ın tüm verileri gibi ve diğer veriler de başka bir nesnede bazı bayrak değerleri söyler. Örneğin

:

{ 
    "some_other_data": 0, 
    "dataProvider": { 
    "query": { 
     "sql": null, 
     "on": null, 
     "joinWith": null, 
     "select": null, 
     "selectOption": null, 
     "distinct": null, 
     "from": null, 
     "groupBy": null, 
     "join": null, 
     "having": null, 
     "union": null, 
     "params": [], 
     "where": { 
     "tk103_current_location.device_id": { 
      "sql": null, 
      "on": null, 
      "joinWith": null, 
      "select": [ 
      "device_id" 
      ], 
      "selectOption": null, 
      "distinct": null, 
      "from": null, 
      "groupBy": null, 
      "join": null, 
      "having": null, 
      "union": null, 
      "params": [], 
      "where": { 
      "transporter_id": 22 
      }, 
      "limit": null, 
      "offset": null, 
      "orderBy": null, 
      "indexBy": null, 
      "modelClass": "api\\modules\\v1\\models\\Tk103Devices", 
      "with": null, 
      "asArray": null, 
      "multiple": null, 
      "primaryModel": null, 
      "link": null, 
      "via": null, 
      "inverseOf": null 
     } 
     }, 
     "limit": null, 
     "offset": null, 
     "orderBy": null, 
     "indexBy": null, 
     "modelClass": "api\\modules\\v1\\models\\Tk103CurrentLocation", 
     "with": null, 
     "asArray": null, 
     "multiple": null, 
     "primaryModel": null, 
     "link": null, 
     "via": null, 
     "inverseOf": null 
    }, 
    "key": null, 
    "db": null, 
    "id": null 
    } 
} 

yani ActiveDataProvider dönüyor:

return array('some_other_data'=>$somedata, 'dataProvider'=>$dataProvider); 

sonra sonuç gibidir:

[ 
    "some_other_data":{ 
    ----- 
    }, 
    "dataProvider": { 
    "device_id": "552255445511", 
    "dated": "2016-03-15 23:00:04", 
    "speed": "73.30", 
    "power": null, 
    "ignition": null, 
    "ac": null, 
    "address": "52", 
    "latitude": "30.4575", 
    "longitude": "76.1", 
    "devices": { 
     "vehicle_number": "UK 6S Z 5555", 
     "vehicle_type": "0" 
    } 
    } 
] 

Sorunum olarak döndüğünüzde ise Sonuçtaki veriler gibi şema, gerçek sonuç değil.

Lütfen bu dataProvider'ın verileri döndürmeye çalıştığı mimari değil, gerçek verileri döndürmeye nasıl zorlayacağına dair bir ipucu veya ipucu verin.

cevap

1

return array('some_other_data'=>$somedata, 'dataProvider'=>$dataProvider->getModels()); 
+0

Müthiş deneyin .. Ama aklımı kaybettim düşünüyorum. Birkaç kez belgelere baktım ama getModels() 'e bakmadım. Tesekkurler dostum. Bu küçük bir şeydi ve bunu anlamıyordum. +1 – Choxx

+0

yii \ rest \ Serializer hattı # 172, Yii2 aynı şeyi dinlenme kontrol cihazında yaptı. :) –