0

REST API call with select question

Hello!

I found a very helpful PHP SDK for Ninox at Github.

And I think my case / problem is quite easy.

The SDK gives you "queryRecords", where you can add a table and do a filter and/or query.

And there is a "evalQuery" function, where you can send directly a query.

Does not matter which one I use, I just try to get all records of a table where a certain field has a certain value. But I never get the expected result.

At the moment my query looks like:

(select Service where Dienstleistung = "Reinigung").Name

 

The result is always empty.

Since other calls work, e.g.:

 

$client->queryRecords($tableList['Fachbereich']->id, array('order' => 'Name'));

 

... I expect that it is not a connection issue.

In another example I read something about if you do a query, define the object that you want to get as a result.

 

$client->queryRecords(
    $tableList['Service']->id,
    array('query' => 'for i in select Service where Dienstleistung = 'Reinigung' do {"Name":i.Name} end')
);

 

But here I've almost the same problem, it ignores the "were"-condition and returns just everything.

11 Antworten

null
    • T_Bartzsch
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Das kommt mir bekannt vor... ist Dienstleistung ein Auswahlfeld? Dann nimm doch mal "like" statt "=" - oder wenn du "=" benutzen willst, dann nimm die Nummer der Option im Auswahlfeld statt des Textes "Reinigung" ....

    (select Service where Dienstleistung like "Reinigung").Name
    
    
    (select Service where Dienstleistung = 4).Name
    
      • Sogenau
      • vor 1 Jahr
      • Gemeldet - anzeigen

      T. Bartzsch danke für die Antwort.

      In der Tat ist das Feld ein Auswahlfeld - sogar ein Mehrfach-Auswahlfeld.

      Mit "like" hatte ich es schon probiert - das funktionierte leider nicht. Mit der ID war eine gute Idee - leider immer noch "responseBody empty" :( 

      Ich bin schon so weit, mir alle Daten einfach zu ziehen - ohne Filter - und das dann auf dem Server zu filtern.

    • T_Bartzsch
    • vor 1 Jahr
    • Gemeldet - anzeigen

    dann versuche es mal mit first()

    first((select Service where Dienstleistung = "Reinigung")).Name
      • T_Bartzsch
      • vor 1 Jahr
      • Gemeldet - anzeigen

      T. Bartzsch  bullshit, du suchst ja alle.... kommst Du denn mit einem einzelnen Formel-Feld weiter, was dir erstmal nur ein Ergebnis deiner query gibt...?

      • Sogenau
      • vor 1 Jahr
      • Gemeldet - anzeigen

      T. Bartzsch  - ich hab das ".Name" weggelassen und siehe da - der Query funktioniert.

      Aber das Feld "Name" gibt es definitiv.

      Jetzt ist der ResponseBody mit vier Ergebnissen: N17, N18, N19, N60

      Das sind sicherlich die Einträge, die ich nun mit einem anderen Call bekommen könnte.
      Wobei es wohl  besser wäre, sie gleich in dem Call zu bekommen.

    • Ninox-Professional
    • planoxpro
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Versuch's mal mit chosen():

    (select Service where chosen(Dienstleistung, "Reinigung")).Name
      • T_Bartzsch
      • vor 1 Jahr
      • Gemeldet - anzeigen

      planox. pro genau, Mehrfachauswahl! :) 

      • Sogenau
      • vor 1 Jahr
      • Gemeldet - anzeigen

      planox. pro that's it! 
      Cool - jetzt wäre es gut, wenn ich mein initialen Post ändern könnte, damit die Suche den Thread auch anzeigt, wenn man Mehrfachauswahl nimmt.

      Hatte vergessen ".name" wieder ran zu machen, Ergebnis ist gleich wieder "empty ResponseBody."

      Ich teste jetzt noch andere Felder, evtl. liegts am Namen oder ich verstehe meine eigene Struktur nicht mehr ;)

      • Sogenau
      • vor 1 Jahr
      • Gemeldet - anzeigen

      planox. pro T. Bartzsch - ich hab den Fehler gefunden.

      In Ninox, meiner Tabelle für "Service" (was zu einem Standort gehört und was wieder zu einem Unternehmen gehört) war der Name der Name des Unternehmens und gehörte gar nicht zur Service Tabelle. Die Service Tabelle hat ein Feld "Titel" und wenn ich anstatt ".Name" den ".Titel" ausgeben lassen möchte, klappt es auch ohne Probleme.

      Wobei chosen auf jeden Fall notwendig war, um überhaupt ein Ergebnis zu bekommen.

      Vielen Dank für eure Zeit :) 

    • Ninox-Professional
    • planoxpro
    • vor 1 Jahr
    • Gemeldet - anzeigen
    SoGenau said:
    Wobei chosen auf jeden Fall notwendig war,

     Ja, mit chosen() fragt man bei Mehrfachauswahlfeldern ab, ob ein bestimmter Eintrag ausgewählt wurde. Bei einfachen Auswahlfeldern genügt ein "=".

      • Sogenau
      • vor 1 Jahr
      • Gemeldet - anzeigen

      planox. pro 

      Wobei das hier immer noch nicht funktioniert:

      $client->queryRecords(
          $tableList['Service']->id,
          array('query' => 'for i in (select Service where chosen(Dienstleistung, 'Reinigung')) do {"Titel":i.Titel} end')
      );

      Das Ergebnis sind immer alle Records, anstatt nur der, die der Where-Bedingung entsprechen.

      for i in (select Service where chosen(Dienstleistung, 'Reinigung')) do {"Titel":i.Titel} end 

      Wenn ich das aber anstatt bei "queryRecords" in der Funktion "evalQuery" aufrufe, kommen wieder die drei Ergebnisse. Jedoch nur mit dem Titel und nicht der Beschreibung.