This file is indexed.

/usr/share/doc/php-doctrine-orm/html/reference/limitations-and-known-issues.html is in doctrine-orm-doc 2.4.6-1+deb8u1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    
    <title>29. Limitations and Known Issues &mdash; Doctrine 2 ORM 2 documentation</title>
    <link rel="stylesheet" href="../_static/bootstrap/css/bootstrap.min.css" type="text/css" />
    <link rel="stylesheet" href="../_static/default.css" type="text/css" />
    <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
    <link rel="stylesheet" href="../_static/layout.css" type="text/css" />
    <link rel="stylesheet" href="../_static/configurationblock.css" type="text/css" />
    <script type="text/javascript">
      var DOCUMENTATION_OPTIONS = {
        URL_ROOT:    '../',
        VERSION:     '2',
        COLLAPSE_MODINDEX: false,
        FILE_SUFFIX: '.html',
        HAS_SOURCE:  true
      };
    </script>

    <script type="text/javascript" src="../_static/jquery.js"></script>
    <script type="text/javascript" src="../_static/configurationblock.js"></script>
    <script type="text/javascript" src="../_static/underscore.js"></script>
    <script type="text/javascript" src="../_static/configurationblock.js"></script>
    <script type="text/javascript" src="../_static/doctools.js"></script>
    <script type="text/javascript" src="../_static/configurationblock.js"></script>
    <script src="../_static/bootstrap/js/bootstrap.min.js"></script>

    <script type="text/javascript">
    <!--
        $(document).ready(function() {
            $("#versions").change(function() {
                var docsUrl = $(this).val();
                window.location.href = docsUrl;
            });
        });
    -->
    </script>
    <link rel="shortcut icon" href="../_static/doctrine.ico"/>
    <link rel="top" title="Doctrine 2 ORM 2 documentation" href="../index.html" />
    <link rel="next" title="30. Filters" href="filters.html" />
    <link rel="prev" title="28. Best Practices" href="best-practices.html" /> 
  </head>
  <body>
    <div id="wrapper">
      <div id="header">
        <h1 id="h1title"></h1>
        <div id="logo">
          <a href="http://www.doctrine-project.org/">Doctrine - PHP Database Libraries</a>
        </div>
      </div>
      <div id="nav" class="cls">
        <div class="tl cls">
          <ul>
            <li><a target="_top" href="/">home</a></li>
            <li><a class="" target="_top" href="http://www.doctrine-project.org/about">about</a></li>
            <li><a class="" target="_top" href="http://www.doctrine-project.org/projects.html">projects</a></li>
            <li><a class="" target="_top" href="http://www.doctrine-project.org/projects/orm">orm</a></li>
            <li><a class="" target="_top" href="http://www.doctrine-project.org/projects/dbal">dbal</a></li>
            <li><a class="" target="_top" href="http://www.doctrine-project.org/blog">blog</a></li>
            <li><a class="" target="_top" href="http://www.doctrine-project.org/jira">development</a></li>
            <li><a class="" target="_top" href="http://www.doctrine-project.org/contribute">contribute</a></li>
            <li><a class="" target="_top" href="http://www.doctrine-project.org/community">community</a></li>
          </ul>
        </div>
      </div>
      <div id="content" class="cls">
    <div class="related">
      <h3>Navigation</h3>
      <ul>
        <li class="right" style="margin-right: 10px">
          <a href="../genindex.html" title="General Index"
             accesskey="I">index</a></li>
        <li class="right" >
          <a href="filters.html" title="30. Filters"
             accesskey="N">next</a> |</li>
        <li class="right" >
          <a href="best-practices.html" title="28. Best Practices"
             accesskey="P">previous</a> |</li>
        <li><a href="/">Doctrine Homepage</a> &raquo;</li>
        <li><a href="../index.html">Doctrine 2 ORM 2 documentation</a> &raquo;</li> 
      </ul>
    </div>  

        <div class="document">
            <div class="documentwrapper">
                <div class="bodywrapper">

              <div class="body" >
                
  <div class="section" id="limitations-and-known-issues">
<h1>29. Limitations and Known Issues<a class="headerlink" href="#limitations-and-known-issues" title="Permalink to this headline"></a></h1>
<p>We try to make using Doctrine2 a very pleasant experience.
Therefore we think it is very important to be honest about the
current limitations to our users. Much like every other piece of
software Doctrine2 is not perfect and far from feature complete.
This section should give you an overview of current limitations of
Doctrine 2 as well as critical known issues that you should know
about.</p>
<div class="section" id="current-limitations">
<h2>29.1. Current Limitations<a class="headerlink" href="#current-limitations" title="Permalink to this headline"></a></h2>
<p>There is a set of limitations that exist currently which might be
solved in the future. Any of this limitations now stated has at
least one ticket in the Tracker and is discussed for future
releases.</p>
<div class="section" id="join-columns-with-non-primary-keys">
<h3>29.1.1. Join-Columns with non-primary keys<a class="headerlink" href="#join-columns-with-non-primary-keys" title="Permalink to this headline"></a></h3>
<p>It is not possible to use join columns pointing to non-primary keys. Doctrine will think these are the primary
keys and create lazy-loading proxies with the data, which can lead to unexpected results. Doctrine can for performance
reasons not validate the correctness of this settings at runtime but only through the Validate Schema command.</p>
</div>
<div class="section" id="mapping-arrays-to-a-join-table">
<h3>29.1.2. Mapping Arrays to a Join Table<a class="headerlink" href="#mapping-arrays-to-a-join-table" title="Permalink to this headline"></a></h3>
<p>Related to the previous limitation with &#8220;Foreign Keys as
Identifier&#8221; you might be interested in mapping the same table
structure as given above to an array. However this is not yet
possible either. See the following example:</p>
<div class="highlight-sql"><div class="highlight"><pre><span class="k">CREATE</span> <span class="k">TABLE</span> <span class="n">product</span> <span class="p">(</span>
    <span class="n">id</span> <span class="nb">INTEGER</span><span class="p">,</span>
    <span class="n">name</span> <span class="nb">VARCHAR</span><span class="p">,</span>
    <span class="k">PRIMARY</span> <span class="k">KEY</span><span class="p">(</span><span class="n">id</span><span class="p">)</span>
<span class="p">);</span>

<span class="k">CREATE</span> <span class="k">TABLE</span> <span class="n">product_attributes</span> <span class="p">(</span>
    <span class="n">product_id</span> <span class="nb">INTEGER</span><span class="p">,</span>
    <span class="n">attribute_name</span> <span class="nb">VARCHAR</span><span class="p">,</span>
    <span class="n">attribute_value</span> <span class="nb">VARCHAR</span><span class="p">,</span>
    <span class="k">PRIMARY</span> <span class="k">KEY</span> <span class="p">(</span><span class="n">product_id</span><span class="p">,</span> <span class="n">attribute_name</span><span class="p">)</span>
<span class="p">);</span>
</pre></div>
</div>
<p>This schema should be mapped to a Product Entity as follows:</p>
<div class="highlight-php"><div class="highlight"><pre><span class="x">class Product</span>
<span class="x">{</span>
<span class="x">    private $id;</span>
<span class="x">    private $name;</span>
<span class="x">    private $attributes = array();</span>
<span class="x">}</span>
</pre></div>
</div>
<p>Where the <tt class="docutils literal"><span class="pre">attribute_name</span></tt> column contains the key and
<tt class="docutils literal"><span class="pre">attribute_value</span></tt> contains the value of each array element in
<tt class="docutils literal"><span class="pre">$attributes</span></tt>.</p>
<p>The feature request for persistence of primitive value arrays
<a class="reference external" href="http://www.doctrine-project.org/jira/browse/DDC-298">is described in the DDC-298 ticket</a>.</p>
</div>
<div class="section" id="value-objects">
<h3>29.1.3. Value Objects<a class="headerlink" href="#value-objects" title="Permalink to this headline"></a></h3>
<p>There is currently no native support value objects in Doctrine
other than for <tt class="docutils literal"><span class="pre">DateTime</span></tt> instances or if you serialize the
objects using <tt class="docutils literal"><span class="pre">serialize()/deserialize()</span></tt> which the DBAL Type
&#8220;object&#8221; supports.</p>
<p>The feature request for full value-object support
<a class="reference external" href="http://www.doctrine-project.org/jira/browse/DDC-93">is described in the DDC-93 ticket</a>.</p>
</div>
<div class="section" id="cascade-merge-with-bi-directional-associations">
<h3>29.1.4. Cascade Merge with Bi-directional Associations<a class="headerlink" href="#cascade-merge-with-bi-directional-associations" title="Permalink to this headline"></a></h3>
<p>There are two bugs now that concern the use of cascade merge in combination with bi-directional associations.
Make sure to study the behavior of cascade merge if you are using it:</p>
<ul class="simple">
<li><a class="reference external" href="http://www.doctrine-project.org/jira/browse/DDC-875">DDC-875</a> Merge can sometimes add the same entity twice into a collection</li>
<li><a class="reference external" href="http://www.doctrine-project.org/jira/browse/DDC-763">DDC-763</a> Cascade merge on associated entities can insert too many rows through &#8220;Persistence by Reachability&#8221;</li>
</ul>
</div>
<div class="section" id="custom-persisters">
<h3>29.1.5. Custom Persisters<a class="headerlink" href="#custom-persisters" title="Permalink to this headline"></a></h3>
<p>A Persister in Doctrine is an object that is responsible for the
hydration and write operations of an entity against the database.
Currently there is no way to overwrite the persister implementation
for a given entity, however there are several use-cases that can
benefit from custom persister implementations:</p>
<ul class="simple">
<li><a class="reference external" href="http://www.doctrine-project.org/jira/browse/DDC-668">Add Upsert Support</a></li>
<li><a class="reference external" href="http://www.doctrine-project.org/jira/browse/DDC-445">Evaluate possible ways in which stored-procedures can be used</a></li>
<li>The previous Filter Rules Feature Request</li>
</ul>
</div>
<div class="section" id="persist-keys-of-collections">
<h3>29.1.6. Persist Keys of Collections<a class="headerlink" href="#persist-keys-of-collections" title="Permalink to this headline"></a></h3>
<p>PHP Arrays are ordered hash-maps and so should be the
<tt class="docutils literal"><span class="pre">Doctrine\Common\Collections\Collection</span></tt> interface. We plan to
evaluate a feature that optionally persists and hydrates the keys
of a Collection instance.</p>
<p><a class="reference external" href="http://www.doctrine-project.org/jira/browse/DDC-213">Ticket DDC-213</a></p>
</div>
<div class="section" id="mapping-many-tables-to-one-entity">
<h3>29.1.7. Mapping many tables to one entity<a class="headerlink" href="#mapping-many-tables-to-one-entity" title="Permalink to this headline"></a></h3>
<p>It is not possible to map several equally looking tables onto one
entity. For example if you have a production and an archive table
of a certain business concept then you cannot have both tables map
to the same entity.</p>
</div>
<div class="section" id="behaviors">
<h3>29.1.8. Behaviors<a class="headerlink" href="#behaviors" title="Permalink to this headline"></a></h3>
<p>Doctrine 2 will <strong>never</strong> include a behavior system like Doctrine 1
in the core library. We don&#8217;t think behaviors add more value than
they cost pain and debugging hell. Please see the many different
blog posts we have written on this topics:</p>
<ul class="simple">
<li><a class="reference external" href="http://www.doctrine-project.org/blog/doctrine2-behaviours-nutshell">Doctrine2 &#8220;Behaviors&#8221; in a Nutshell</a></li>
<li><a class="reference external" href="http://www.doctrine-project.org/blog/doctrine2-versionable">A re-usable Versionable behavior for Doctrine2</a></li>
<li><a class="reference external" href="http://www.doctrine-project.org/blog/your-own-orm-doctrine2">Write your own ORM on top of Doctrine2</a></li>
<li><a class="reference external" href="http://www.doctrine-project.org/blog/doctrine2-behavioral-extensions">Doctrine 2 Behavioral Extensions</a></li>
<li><cite>Doctrator &lt;https://github.com/pablodip/doctrator</cite>&gt;_</li>
</ul>
<p>Doctrine 2 has enough hooks and extension points so that <strong>you</strong> can
add whatever you want on top of it. None of this will ever become
core functionality of Doctrine2 however, you will have to rely on
third party extensions for magical behaviors.</p>
</div>
<div class="section" id="nested-set">
<h3>29.1.9. Nested Set<a class="headerlink" href="#nested-set" title="Permalink to this headline"></a></h3>
<p>NestedSet was offered as a behavior in Doctrine 1 and will not be
included in the core of Doctrine 2. However there are already two
extensions out there that offer support for Nested Set with
Doctrine 2:</p>
<ul class="simple">
<li><a class="reference external" href="http://github.com/guilhermeblanco/Doctrine2-Hierarchical-Structural-Behavior">Doctrine2 Hierarchical-Structural Behavior</a></li>
<li><a class="reference external" href="http://github.com/blt04/doctrine2-nestedset">Doctrine2 NestedSet</a></li>
</ul>
</div>
</div>
<div class="section" id="known-issues">
<h2>29.2. Known Issues<a class="headerlink" href="#known-issues" title="Permalink to this headline"></a></h2>
<p>The Known Issues section describes critical/blocker bugs and other
issues that are either complicated to fix, not fixable due to
backwards compatibility issues or where no simple fix exists (yet).
We don&#8217;t plan to add every bug in the tracker there, just those
issues that can potentially cause nightmares or pain of any sort.</p>
<p>See the Open Bugs on Jira for more details on <a class="reference external" href="http://www.doctrine-project.org/jira/secure/IssueNavigator.jspa?reset=true&amp;mode=hide&amp;pid=10032&amp;resolution=-1&amp;sorter/field=updated&amp;sorter/order=DESC">bugs, improvement and feature
requests</a>.</p>
<div class="section" id="identifier-quoting-and-legacy-databases">
<h3>29.2.1. Identifier Quoting and Legacy Databases<a class="headerlink" href="#identifier-quoting-and-legacy-databases" title="Permalink to this headline"></a></h3>
<p>For compatibility reasons between all the supported vendors and
edge case problems Doctrine 2 does <strong>NOT</strong> do automatic identifier
quoting. This can lead to problems when trying to get
legacy-databases to work with Doctrine 2.</p>
<ul class="simple">
<li>You can quote column-names as described in the
<a class="reference internal" href="basic-mapping.html"><em>Basic-Mapping</em></a> section.</li>
<li>You cannot quote join column names.</li>
<li>You cannot use non [a-zA-Z0-9_]+ characters, they will break
several SQL statements.</li>
</ul>
<p>Having problems with these kind of column names? Many databases
support all CRUD operations on views that semantically map to
certain tables. You can create views for all your problematic
tables and column names to avoid the legacy quoting nightmare.</p>
</div>
<div class="section" id="microsoft-sql-server-and-doctrine-datetime">
<h3>29.2.2. Microsoft SQL Server and Doctrine &#8220;datetime&#8221;<a class="headerlink" href="#microsoft-sql-server-and-doctrine-datetime" title="Permalink to this headline"></a></h3>
<p>Doctrine assumes that you use <tt class="docutils literal"><span class="pre">DateTime2</span></tt> data-types. If your legacy database contains DateTime
datatypes then you have to add your own data-type (see Basic Mapping for an example).</p>
</div>
</div>
</div>


              </div>
                </div>

            </div>
      <div class="sphinxsidebar">
        <div class="sphinxsidebarwrapper">
             
            <div id="searchbox" style="">
              <h3>Search</h3>
                <form class="search" action="http://readthedocs.org/search/project/" method="get">
                  <input type="text" name="q" size="18">
                  <input type="submit" value="Go">
                  <input type="hidden" name="selected_facets" value="project:">
                </form>
            </div>
            <h3><a href="../index.html">Table Of Contents</a></h3>
            <ul>
<li><a class="reference internal" href="#">29. Limitations and Known Issues</a><ul>
<li><a class="reference internal" href="#current-limitations">29.1. Current Limitations</a><ul>
<li><a class="reference internal" href="#join-columns-with-non-primary-keys">29.1.1. Join-Columns with non-primary keys</a></li>
<li><a class="reference internal" href="#mapping-arrays-to-a-join-table">29.1.2. Mapping Arrays to a Join Table</a></li>
<li><a class="reference internal" href="#value-objects">29.1.3. Value Objects</a></li>
<li><a class="reference internal" href="#cascade-merge-with-bi-directional-associations">29.1.4. Cascade Merge with Bi-directional Associations</a></li>
<li><a class="reference internal" href="#custom-persisters">29.1.5. Custom Persisters</a></li>
<li><a class="reference internal" href="#persist-keys-of-collections">29.1.6. Persist Keys of Collections</a></li>
<li><a class="reference internal" href="#mapping-many-tables-to-one-entity">29.1.7. Mapping many tables to one entity</a></li>
<li><a class="reference internal" href="#behaviors">29.1.8. Behaviors</a></li>
<li><a class="reference internal" href="#nested-set">29.1.9. Nested Set</a></li>
</ul>
</li>
<li><a class="reference internal" href="#known-issues">29.2. Known Issues</a><ul>
<li><a class="reference internal" href="#identifier-quoting-and-legacy-databases">29.2.1. Identifier Quoting and Legacy Databases</a></li>
<li><a class="reference internal" href="#microsoft-sql-server-and-doctrine-datetime">29.2.2. Microsoft SQL Server and Doctrine &#8220;datetime&#8221;</a></li>
</ul>
</li>
</ul>
</li>
</ul>

            <h4>Previous topic</h4>
            <p class="topless"><a href="best-practices.html"
                                  title="previous chapter">28. Best Practices</a></p>
            <h4>Next topic</h4>
            <p class="topless"><a href="filters.html"
                                  title="next chapter">30. Filters</a></p>
            <h3>This Page</h3>
            <ul class="this-page-menu">
              <li><a href="../_sources/reference/limitations-and-known-issues.txt"
                     rel="nofollow">Show Source</a></li>
            </ul>
        </div>
      </div>
          <div class="clearer"></div>
        </div>
          <div class="footer">
              &copy; Copyright 2010-12, Doctrine Project Team.
              Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.2.3.
            <br/>
            <a target="_BLANK" href="http://www.servergrove.com"><img src="../_static/servergrove.jpg" /></a>      <br/><br/>
            <form action="https://www.paypal.com/cgi-bin/webscr" method="post">
              <input type="hidden" name="cmd" value="_s-xclick" />
              <input type="hidden" name="hosted_button_id" value="BAE2E3XANQ77Y" />
              <input type="Submit" value="Donate via PayPal" />
            </form>
          </div>
      </div>

      <div id="bot-rcnr">
        <div class="tl"><!-- corner --></div>
      </div>
    </div>

  <a class="githublink" href="http://github.com/doctrine">Fork me on GitHub</a>
  </body>
</html>