PHP code example of pi-space / notion-api-integration
1. Go to this page and download the library: Download pi-space/notion-api-integration library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
pi-space / notion-api-integration example snippets
use PISpace\Notion\Core\Models\NotionDatabase;
$database = NotionDatabase::make('632b5fb7e06c4404ae12065c48280e4c')->find();
use PISpace\Notion\Core\Models\NotionDatabase;
$database = NotionDatabase::make()
->setParentPageId('fa4379661ed948d7af52df923177028e')
->setTitle('Test Database2')
->buildProperties([
NotionTitle::make('Name'),
NotionSelect::make('Status')->setOptions([
['name' => 'A', 'color' => 'red'],
['name' => 'B', 'color' => 'green']
]),
NotionDate::make('Date'),
NotionCheckbox::make('Checkbox'),
NotionFormula::make('Formula')->setExpression('prop("Name")'),
NotionRelation::make('Relation')
->setDatabaseId($this->databaseId),
NotionRollup::make('Rollup')
->setRollupPropertyName('Name')
->setRelationPropertyName('Relation')
->setFunction('count'),
NotionPeople::make('People'),
NotionMedia::make('Media'),
NotionEmail::make('Email'),
NotionNumber::make('Number'),
NotionPhoneNumber::make('Phone'),
NotionUrl::make('Url'),
NotionCreatedTime::make('CreatedTime'),
NotionCreatedBy::make('CreatedBy'),
NotionLastEditedTime::make('LastEditedTime'),
NotionLastEditedBy::make('LastEditedBy'),
])
->create();
$database = NotionDatabase::make('a5f8af6484334c09b69d5dd5f54b378f')
->buildProperties([
// Specify the updated properties
])
->update();
// Using one filter
$paginated = NotionDatabase::make('632b5fb7e06c4404ae12065c48280e4c')
->setFilter(NotionSelect::make('Status')->equals('In Progress'))
->query();
// Using multiple filters with AND operator
$pages = $database->setFilters([
NotionFilter::groupWithAnd([
NotionSelect::make('Status')->equals('Reading'),
NotionTitle::make('Name')->equals('MMMM')
])
])->query();
// Using multiple filters with OR operator
$pages = $database->setFilters([
NotionFilter::groupWithOr([
NotionSelect::make('Status')->equals('Reading'),
NotionTitle::make('Name')->equals('MMMM')
])
])->query();
// Using Notion Compound Filters
$response = $database->setFilters([
NotionFilter::groupWithOr([
NotionSelect::make('Status')->equals('Reading'),
NotionFilter::groupWithAnd([
NotionTitle::make('Name')->contains('MMMM'),
NotionTitle::make('Name')->contains('EEEE')
])
]),
])->query();
// Sorting database results
$pages = $database->sorts(NotionSort::property('Name')->ascending())
->query();
// Sort with multiple properties
$pages = $database->setSorts([
NotionTitle::make('Name')->ascending(),
NotionDate::make('Date')->descending()
])->query();
// Apply sorts and filters together
$pages = $database->setSorts([
NotionTitle::make('Name')->ascending(),
NotionDate::make('Date')->descending()
])->setFilters([
NotionFilter::groupWithOr([
NotionSelect::make('Status')->equals('Reading'),
NotionTitle::make('Name')->equals('MMMM')
])
])->query();
$page = NotionPage::make('b4f8e429038744ca9c8d5afa93ea2edd')->find();
$page = NotionPage::make('b4f8e429038744ca9c8d5afa93ea2edd')->findWithContent();
$page = NotionPage::make()
->setDatabaseId('a5f8af6484334c09b69d5dd5f54b378f')
->buildProperties([
NotionTitle::make('Name')
->setTitle('Test'),
NotionSelect::make('Status')
->setSelected('A'),
NotionDate::make('Date')
->setStart('2021-01-01'),
NotionCheckbox::make('Checkbox')
->setChecked(true),
NotionRelation::make('Relation')
->setPageIds(['633fc9822c794e3682186491c50210e6']),
NotionText::make('Password')
->setText('Text'),
NotionPeople::make('People')
->setPeople([
NotionUser::make('2c4d6a4a-12fe-4ce8-a7e4-e3019cc4765f'),
]),
NotionMedia::make('Media')
->setFiles([
NotionFile::make()
->setFileType('file')
->setRelativeType('external')
->setFileUrl('https://www.google.com'),
]),
NotionEmail::make('Email')
->setEmail('[email protected] '),
NotionNumber::make('Number')
->setNumber(10),
NotionPhoneNumber::make('Phone')
->setPhoneNumber('+201010101010'),
NotionUrl::make('Url')
->setUrl('https://www.google.com'),
])
->create();
$page = NotionPage::make()
->setDatabaseId($this->databaseId)
->buildProperties([
NotionTitle::make('Name', 'Test'),
NotionSelect::make('Status')
->setSelected('A'),
])->setBlockBuilder(
NotionBlockBuilder::make()
->headingOne(NotionRichText::text('Eyad Hamza')
->isToggleable()
->setBlockBuilder(
NotionBlockBuilder::make()
->headingOne(NotionRichText::text('Eyad Hamza')
->bold()
->italic()
->strikethrough()
->underline()
->code()
->color('red')
)
)
->bold()
->italic()
->strikethrough()
->underline()
->code()
->color('red')
)
->headingTwo('Heading 2')
->headingThree('Heading 3')
->numberedList([
'Numbered List',
'asdasd Numbered List'
])
->bulletedList(['Bullet List'])
->paragraph('Paragraph')
->toDo(['To Do List'])
->toggle('Toggle')
->quote('Quote')
->divider()
->callout('Callout')
->image(NotionFile::make()
->setFileType('image')
->setFileUrl('https://my.alfred.edu/zoom/_images/foster-lake.jpg')
->setRelativeType('external')
)
->file(NotionFile::make()
->setFileType('file')
->setFileUrl('https://www.google.com')
->setRelativeType('external')
)
->embed('https://www.google.com')
->bookmark('https://www.google.com')
->code(NotionRichText::text('echo "Hello World"')->setCodeLanguage('php'))
->equation('x^2 + y^2 = z^2')
->pdf(NotionFile::make()
->setFileType('pdf')
->setFileUrl('https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf')
->setRelativeType('external')
)
->video(NotionFile::make()
->setFileType('video')
->setFileUrl('https://www.youtube.com/watch?v=xTQ7vhtp23w')
->setRelativeType('external')
)
)->create();
$page = NotionPage::make('b4f8e429038744ca9c8d5afa93ea2edd')
->buildProperties([
// Specify the updated properties
])->update();
$page = NotionPage::make('b4f8e429038744ca9c8d5afa93ea2edd')->delete();
$block = NotionBlock::make('b4f8e429038744ca9c8d5afa93ea2edd')->find();
$blockChildren = NotionBlock::make('b4f8e429038744ca9c8d5afa93ea2edd')
->fetchChildren();
$block = NotionBlock::make('62ec21df1f9241ba9954828e0958da69')
->setType(NotionBlockTypeEnum::HEADING_1)
->setBlockContent(NotionRichText::text('Eyad Hamza'))
->update();
$block = NotionBlock::make('62ec21df1f9241ba9954828e0958da69')
->setBlockBuilder(
NotionBlockBuilder::make()
->headingTwo(NotionRichText::text('Eyad Hamza')
->bold()
->setLink('https://www.google.com')
->color('red'))
->headingThree('Heading 3')
->numberedList(['Numbered List'])
->bulletedList(['Bullet List'])
)->createChildren();
$block = NotionBlock::make('62ec21df1f9241ba9954828e0958da69')->delete();
$response = NotionSearch::inPages('Eyad')
->sorts([
NotionLastEditedTime::make()->ascending(),
])
->apply(50);
$response = NotionSearch::inDatabases('Eyad')->apply(50);
$users = NotionUser::make()->index();
$user = NotionUser::make('2c4d6a4a-12fe-4ce8-a7e4-e3019cc4765f')->find();
$bot = NotionUser::make()->getBot();
$comments = NotionComment::make('0b036890391f417cbac775e8b0bba680')->index();
// You can pass a rich text object if you want to format the comment
NotionComment::make()
->setDiscussionId('ac803deb7b064cca83067c67914b02b4')
->setContent(NotionRichText::make('This is a comment')
->color('red')
->bold()
->italic()
)
->create();
// Or you can pass a string
NotionComment::make()
->setParentId('a270ab4fa945449f9284b180234b00c3')
->setContent('This is a comment')
->create();
$response = NotionSearch::inPages('Eyad')->apply(50);
$pages = $response->getResults(); // Get the first 50 results
$response->hasMore(); // Check if there are more results
$response->next() // Get the next 50 results (if hasMore is true)
$response->getObjectType(); // Get the type of the object (always "list")
$response->getResultsType() // Get the type of the results (Block/Database/Page)
class User extends Model
{
use Notionable;
protected string $notionDatabaseId = '74dc9419bec24f10bb2e65c1259fc65a';
protected $guarded = [];
public function mapToNotion(): array
{
return [
'name' => NotionTitle::make('Name'),
'email' => NotionEmail::make('Email'),
'password' => NotionText::make('Password'),
];
}
}
$user = User::create([
'name' => 'John Doe',
'email' => '[email protected] ',
'password' => 'password'
]);
$user->saveToNotion();
// in app/Console/Kernel.php
protected function schedule(Schedule $schedule): void
{
$schedule->command(NotionDatabaseWatcher::class, ['02758e48d12244f99552dd4f766a0077'])->everyMinute();
}
bash
php artisan notion:watch '02758e48d12244f99552dd4f766a0077'