CakeFest 2024: The Official CakePHP Conference

Collection::addOrReplaceOne

(No version information available, might only be in Git)

Collection::addOrReplaceOneДобавляет или заменяет документ коллекции

Описание

public mysql_xdevapi\Collection::addOrReplaceOne(string $id, string $doc): mysql_xdevapi\Result

Добавляет новый документ или заменяет существующий.

Вот несколько сценариев для этого метода:

  • Если ни идентификатор, ни какое-либо уникальное значение ключа не конфликтуют с каким-либо документом в коллекции, то этот документ добавляется.

  • Если идентификатор не соответствует ни одному документу, но одно или несколько уникальных значений ключей конфликтуют с документом в коллекции, выдаётся ошибка.

  • Если идентификатор соответствует существующему документу и уникальные ключи не определены для коллекции, то документ заменяется.

  • Если идентификатор соответствует существующему документу, или все уникальные ключи в документе замены соответствуют этому же документу или не конфликтуют с другими документами в коллекции, документ заменяется.

  • Если идентификатор соответствует существующему документу, а один или несколько уникальных ключей соответствуют документу, отличному от коллекции, выдаётся ошибка.

Список параметров

id

Идентификатор фильтра. Если идентификатор или любое другое поле с уникальным индексом уже существует в коллекции, он обновит соответствующий документ.

По умолчанию этот идентификатор автоматически генерируется MySQL Server при добавлении записи и упоминается, как поле с именем '_id'.

doc

Это документ для добавления или замены, представляющий собой строку JSON.

Возвращаемые значения

Объект Result.

Примеры

Пример #1 Пример использования mysql_xdevapi\Collection::addOrReplaceOne()

<?php
$session
= mysql_xdevapi\getSession("mysqlx://user:password@localhost");
$session->sql("DROP DATABASE IF EXISTS addressbook")->execute();
$session->sql("CREATE DATABASE addressbook")->execute();

$schema = $session->getSchema("addressbook");
$create = $schema->createCollection("people");

$collection = $schema->getCollection("people");

// Использование add()
$result = $collection->add('{"name": "Wilma", "age": 23, "job": "Teacher"}')->execute();

// Использование addOrReplaceOne()
// Примечания: мы передаём известное значение _id
$result = $collection->addOrReplaceOne('00005b6b53610000000000000056', '{"name": "Fred", "age": 21, "job": "Construction"}');

?>
add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top