2016-11-26 99 views
0

我有所謂的「住宿」我嘗試使用此代碼DATAS數組追加空字段:rethinkdb PHP RQL追加到嵌套場

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

但到目前爲止,沒有任何更新。我檢查了我所有的變量,並且一切正常(ID,名稱,簽入和結帳日期......),並且我也沒有任何PHP錯誤。 php rql api手冊並不是非常具體的追加嵌套字段的方式,所以我不知道我在那裏做錯了什麼。希望有人能幫我解決這個問題。

回答

0

你說accomodations字段爲空:如果它不是類型數組(例如null),或者它不存在,那麼查詢將被拒絕。 你可以使用一個branch測試的所有情況:

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); 

不與PHP連接器進行測試,但。希望這可以幫助!

+0

好的謝謝。將嘗試。 – shad0wproxy