2016-11-26 3 views
0

Ich habe ein leeres Feld namens „Unterkunft“ bekam ich versuche, mit einer Reihe von Daten mit diesem Code anhängen:rethinkdb php RQL append, um verschachtelte Feld

bisher
r\table('xxx')->get($_POST['id'])->update(['accommodations' => 
r\row('accommodations')->append(['name' => $_POST['name'] , 'checkin' => 
$checkin , 'checkout' => $checkout , 'status' => 'rq'])])->run($conn); 

Aber nichts wird aktualisiert. Ich habe über alle meine Variablen überprüft und alles ist in Ordnung (die ID, Name, Check-in und Checkout-Daten ...) und ich habe auch keine PHP-Fehler. php rql api Handbuch ist nicht sehr spezifisch über die Art, ein verschachteltes Feld anzuhängen, so dass ich keine Ahnung habe, was ich dort falsch mache. Hoffe jemand kann mir dabei helfen.

Antwort

0

Sie sagen accomodations Feld ist leer: wenn es nicht vom Typ Array (null zum Beispiel) ist, oder wenn es nicht existiert, dann wird die Abfrage zurückgewiesen. Sie können eine branch verwenden, um alle Fälle zu testen:

r\table('xxx')->get($_POST['id'])->update(function($doc){ 
    return [ 
    'accomodations' => r\branch(
     // test the field does not exist or is not an array 
     $doc->hasFields('accomodations')->not()->or($doc('accomodations')->typeOf()->ne('ARRAY')), 
     // test true: absent or not an array --> override the value 
     [ 
     [ 
      'name' => $_POST['name'], 
      'checkin' => $checkin , 
      'checkout' => $checkout , 
      'status' => 'rq' 
     ] 
     ], 
     // test false: exists as an array --> append 
     $doc('accomodations')->append([ 
     'name' => $_POST['name'], 
     'checkin' => $checkin , 
     'checkout' => $checkout , 
     'status' => 'rq' 
     ]) 
    ) 
    ]; 
})->run($conn); 

Nicht jedoch mit PHP-Anschluss getestet. Hoffe das hilft!

+0

Ok danke. Werde das versuchen. – shad0wproxy