mirror of
https://github.com/php/doc-ru.git
synced 2025-07-30 12:57:40 +00:00

git-svn-id: https://svn.php.net/repository/phpdoc/ru/trunk@340123 c90b9560-bf6c-de11-be94-00142212c4b1
167 lines
6.3 KiB
XML
167 lines
6.3 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
||
<!-- $Revision$ -->
|
||
<!-- EN-Revision: c613a7e2f1f795b1fb741e4bda1a40e441c49f7a Maintainer: rjhdby Status: ready -->
|
||
<!-- Reviewed: yes -->
|
||
|
||
<phpdoc:classref xml:id="class.mongodbref" xmlns:phpdoc="http://php.net/ns/phpdoc" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xi="http://www.w3.org/2001/XInclude">
|
||
|
||
<title>Класс MongoDBRef</title>
|
||
<titleabbrev>MongoDBRef</titleabbrev>
|
||
|
||
<partintro>
|
||
|
||
<warning>
|
||
&mongo.noalternative.class.note;
|
||
<para>
|
||
Концепция ссылок на базу данных, а следовательно и данный класс,
|
||
являются устаревшими.
|
||
</para>
|
||
</warning>
|
||
|
||
<!-- {{{ MongoGridfsCursor intro -->
|
||
<section xml:id="mongodbref.intro">
|
||
&reftitle.intro;
|
||
<para>
|
||
Этот класс может быть использован для создания простых связей между
|
||
объектами разных коллекций.
|
||
</para>
|
||
<para>
|
||
<emphasis>Основание</emphasis>: Предположим, что нам нужно сослаться
|
||
на документ из другой коллекции. Самый простой способ - создать специальное
|
||
поле в текущем документе. Например, если у нас есть коллекции людей и
|
||
адресов, мы можем создать связь между документом адреса и документом человека:
|
||
<example>
|
||
<title>Связывание документов</title>
|
||
<programlisting role="php">
|
||
<![CDATA[
|
||
<?php
|
||
|
||
$people = $db->people;
|
||
$addresses = $db->addresses;
|
||
|
||
$myAddress = array("line 1" => "123 Main Street",
|
||
"line 2" => null,
|
||
"city" => "Springfield",
|
||
"state" => "Vermont",
|
||
"country" => "USA");
|
||
|
||
// сохраняем адрес
|
||
$addresses->insert($myAddress);
|
||
|
||
// сохраняем человека со ссылкой на адрес
|
||
$me = array("name" => "Fred", "address" => $myAddress['_id']);
|
||
$people->insert($me);
|
||
|
||
?>
|
||
]]>
|
||
</programlisting>
|
||
</example>
|
||
</para>
|
||
<para>
|
||
Позже мы можем найти адрес человека с помощью запроса в
|
||
коллекцию адресов с использованием <classname>MongoId</classname>
|
||
который мы сохранили в коллекции людей.
|
||
</para>
|
||
<para>
|
||
Теперь предположим, что мы имеем более общий случай, когда не известно
|
||
какая коллекция (или даже база данных) содержит указанный документ.
|
||
<classname>MongoDBRef</classname> является хорошим выбором в такой
|
||
ситуации, так как это общий формат, который понимают все драйверы и
|
||
базы данных.
|
||
</para>
|
||
<para>
|
||
Если каждый человек имеет список понравившихся вещей и все они находятся
|
||
в разных коллекциях, таких как: "hobbies", "sports", "books", и т.д.,
|
||
мы можем использовать <classname>MongoDBRef</classname> для отслеживания
|
||
того, что и из какой коллекции "лайкнул" человек:
|
||
<example>
|
||
<title>Создание MongoDBRef связи</title>
|
||
<programlisting role="php">
|
||
<![CDATA[
|
||
<?php
|
||
|
||
$people = $db->selectCollection("people");
|
||
|
||
// модель поезда в коллекции "hobbies"
|
||
$trainRef = MongoDBRef::create("hobbies", $modelTrains['_id']);
|
||
// футбол в "sports" коллекции
|
||
$soccerRef = MongoDBRef::create("sports", $soccer['_id']);
|
||
|
||
//теперь мы знаем, какие коллекции элементов в массиве "likes" придут, когда
|
||
// мы будем извлекать этот документ
|
||
$people->insert(array("name" => "Fred", "likes" => array($trainRef, $soccerRef)));
|
||
|
||
?>
|
||
]]>
|
||
</programlisting>
|
||
</example>
|
||
</para>
|
||
<para>
|
||
Ссылки в базе данных можно рассматривать как гиперссылки: он
|
||
предоставляет уникальный адрес другого документа, но не загружает
|
||
его автоматически и не переходит по этим ссылкам.
|
||
</para>
|
||
<para>
|
||
Ссылки в базе данных это обычный ассоциативный массив, не экземплр
|
||
<classname>MongoDBRef</classname>, поэтому этот класс немного оличается
|
||
от других классов типов данных. Этот класс содержит только ститические
|
||
методы для манипуляции ссылками базы данных.
|
||
</para>
|
||
</section>
|
||
<!-- }}} -->
|
||
|
||
<section xml:id="mongodbref.synopsis">
|
||
&reftitle.classsynopsis;
|
||
|
||
<!-- {{{ Synopsis -->
|
||
<classsynopsis>
|
||
<ooclass><classname>MongoDBRef</classname></ooclass>
|
||
|
||
<!-- {{{ Class synopsis -->
|
||
<classsynopsisinfo>
|
||
<ooclass>
|
||
<classname>MongoDBRef</classname>
|
||
</ooclass>
|
||
</classsynopsisinfo>
|
||
<!-- }}} -->
|
||
|
||
<classsynopsisinfo role="comment">&Methods;</classsynopsisinfo>
|
||
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.mongodbref')/db:refentry/db:refsect1[@role='description']/descendant::db:methodsynopsis[1])" />
|
||
</classsynopsis>
|
||
<!-- }}} -->
|
||
|
||
</section>
|
||
|
||
<section>
|
||
&reftitle.seealso;
|
||
<para>
|
||
Базовая документация на MongoDB лежит тут <link xlink:href="&url.mongodb.dochub.dbrefs;">databases references</link>.
|
||
</para>
|
||
</section>
|
||
</partintro>
|
||
|
||
&reference.mongo.entities.mongodbref;
|
||
|
||
</phpdoc:classref>
|
||
|
||
<!-- Keep this comment at the end of the file
|
||
Local variables:
|
||
mode: sgml
|
||
sgml-omittag:t
|
||
sgml-shorttag:t
|
||
sgml-minimize-attributes:nil
|
||
sgml-always-quote-attributes:t
|
||
sgml-indent-step:1
|
||
sgml-indent-data:t
|
||
indent-tabs-mode:nil
|
||
sgml-parent-document:nil
|
||
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
|
||
sgml-exposed-tags:nil
|
||
sgml-local-catalogs:nil
|
||
sgml-local-ecat-files:nil
|
||
End:
|
||
vim600: syn=xml fen fdm=syntax fdl=2 si
|
||
vim: et tw=78 syn=sgml
|
||
vi: ts=1 sw=1
|
||
-->
|