Database-Endpoint Examples

Query Filters

We aim to implement each available filter object of the API with a convenient instance method. As long as the other filter types aren't implemented as neat methods, you can use the rawFilter like in the Query Database example below.

The following filter types are implemented so far:

Text properties

$filter = Filter::textFilter('Name', Operators::EQUALS, 'Ada Lovelace');

Valid operators: EQUALS, DOES_NOT_EQUAL, CONTAINS, DOES_NOT_CONTAIN, STARTS_WITH, ENDS_WITH, IS_EMPTY, IS_NOT_EMPTY.

Number properties

$filter = Filter::numberFilter("Birth year", Operators::GREATER_THAN_OR_EQUAL_TO, 1906);

Valid operators: EQUALS, DOES_NOT_EQUAL, GREATER_THAN, LESS_THAN, GREATER_THAN_OR_EQUAL_TO , LESS_THAN_OR_EQUAL_TO, IS_EMPTY, IS_NOT_EMPTY.

Query Database

use Illuminate\Support\Collection;
use FiveamCode\LaravelNotionApi\Query\Filters\Filter;
use FiveamCode\LaravelNotionApi\Query\Filters\Operators;
use FiveamCode\LaravelNotionApi\Query\Sorting;

# Queries a specific database and returns a collection of pages (= database entries)
$sortings = new Collection();
$filters = new Collection();

$sortings
    ->add(Sorting::propertySort("Birth year", "ascending"));
$sortings
    ->add(Sorting::timestampSort("created_time", "ascending"));

$filters
    ->add(
        Filter::textFilter("Name", Operators::EQUALS, "Ada Lovelace")
    );

# or
$filters
    ->add(
        Filter::rawFilter(
            "Known for", 
            [
                "multi_select" =>
                    ["contains" => "COBOL"]
            ]
        )
    );

# the whole query
\Notion::database("8284f3ff77e24d4a939d19459e4d6bdc")
        ->filterBy($filters) // filters are optional
        ->sortBy($sortings) // sorts are optional
        ->limit(5) // limit is optional
        ->query()
        ->asCollection();

// Returns Ada Lovelace and Grace Hopper from our Test Database: https://www.notion.so/8284f3ff77e24d4a939d19459e4d6bdc