Feb 26, 2016 05:54 PM
Hello all,
I have been messing around with the API and PHP to try and display a list of records.
I have been sort of successful in retrieving records but when it is linked to another table it just shows the Record ID instead of the value from the other table. Anyway around this?
For instance in the code below $model is returned as the Record ID instead of the Model Name.
if ( array_key_exists ( 'Model', $fields ) ) {
echo '<h2>Model</h2>';
echo '<ul>';
foreach ( $fields[ 'Model' ] as $model ) {
echo '<li>' . $model . '</li>';
}
echo '</ul>';
}
Thanks.
Feb 26, 2016 06:11 PM
Hello Craig, this is the intended behavior of the API right now–if you’d like to retrieve the record from the other table, you would make another request for that record. We may offer an option in the future for the API to “expand” that linked record and return all its cell values inline, rather than simply its record ID.
Feb 26, 2016 08:08 PM
Thanks for the quick reply. Glad to know it wasn’t anything stupid I was doing at this end.
Mar 08, 2016 06:41 PM
Is there a way to show the name instead of the Record ID?
Mar 08, 2016 10:50 PM
To get the name of the linked record instead of just its id, you need to issue a subsequent API request, scoped to the other table:
$ curl https://api.airtable.com/v0/<YOUR_BASE_ID>/<NAME_OF_OTHER_TABLE>/<RECORD_ID> \
-H "Authorization: Bearer YOUR_API_KEY"
You can find more documentation and example code for this in the “Retrieve a record” section of the API docs for the other table.
We realize this is inconvenient, so in the future, we plan on improving the API by adding support for retrieving all the linked record’s cell values (including its name), instead of just retrieving the id.
Mar 09, 2016 02:43 PM
Hi Kennedy,
As another approach, you could create a formula that references the link field. The formula value will be returned in the API response and it will be the text version of the link.
Alex
Mar 23, 2016 06:14 PM
Good to know that you’re expanding on retrieving linked records is in the roadmap.
I’m curious, is it possible to retrieve multiple records in on API call? If so, how would I make that call?
Mar 27, 2016 07:35 PM
I think that at this time, this is the most elegant solution.
It exposes both the record ID and publicly viewed ‘Name’ of the linked table making it easier to reference in external app.
Very easy to maintain.
Pete
Apr 12, 2016 07:28 AM
+1 for denormalised queries
Having a option which would put all the linked information inline would be very useful. If you have a relatively complicated table, the amount of work you have to do to denormalise it is quite significant which limits its appeal for a quick solution for some applications.
Downloading via CSV is viable but not easily automated. Maybe you could add an API call which retrieves the CSV if the full JSON output is going to take a while
Andy
Sep 09, 2016 03:30 PM
A kludge I’ve done : insert adjacent column to link column in the table. Define field in this column as a Formula. Set to value of field name of link column. For example:
“teacherActual_link” is name of field which is a link to the Instructors table. “teacherActual” is the name of field defined as Formula, with the “formula” defined as simply “={teacherActual_link}”. Saving this new column (field) will populate the table with the actual values of the link. Do the API query on the non-link field and the value will be returned, not a record ID.
Inelegant but it works for me now.