php8.5
Home/ Manual/ mysql_xdevapi / schema/ Schema::createCollection

Schema::createCollection

PHP function Edit on GitHub ✎

Add collection to schema

Description

mysql_xdevapi\Schema::createCollection(string $name, [string $validate]): mysql_xdevapi\Collection

Create a collection within the schema.

Parameters

name

Collection name.

validate

Validation definition, as a JSON object.

Return Values

The Collection object.

Changelog

VersionDescription
8.0.20Added the optional validate parameter.

Examples

mysql_xdevapi\Schema::createCollection example

php
<?php
$session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");

$session->sql("DROP DATABASE IF EXISTS food")->execute();
$session->sql("CREATE DATABASE food")->execute();
$session->sql("CREATE TABLE food.fruit(name text, rating text)")->execute();

$schema = $session->getSchema("food");
$schema->createCollection("trees");

print_r($schema->gettables());
print_r($schema->getcollections());

The above example will output something similar to:

output
Array
(
    [fruit] => mysql_xdevapi\Table Object
        (
            [name] => fruit
        )
)
Array
(
    [trees] => mysql_xdevapi\Collection Object
        (
            [name] => trees
        )
)

mysql_xdevapi\Schema::createCollection example

php
 <?php
 $collection = $schema->createCollection("mycollection", '{
	"validation": {
		"level": "strict",
		"schema": {
			"id": "http://json-schema.org/geo",
			"description": "A geographical coordinate",
			"type": "object",
			"properties": {
				"latitude": {
					"type": "number"
				},
				"longitude": {
					"type": "number"
				}
			},
			"required": ["latitude", "longitude"]
		}
	}
}');
// Succeeds
$collection->add('{"latitude": 10, "longitude": 20}')->execute();

// Fails, invalid types (not numbers)
$collection->add('{"latitude": "lat", "longitude": "long"}')->execute();

Source: reference/mysql_xdevapi/mysql_xdevapi/schema/createcollection.xml · from the official PHP manual (php/doc-en)