Fügen Sie denselben Dienst mit unterschiedlichen Aliasnamen in Symfony ein
<p>Ich bin mir nicht sicher, ob Ihre Frage richtig ist, also lassen Sie es mich erklären<br /><br />Ich verwende foselasticabundance mit dieser Konfiguration:</p><p>< ;br /> </p>
<pre class="brush:php;toolbar:false;"># Lesen Sie die Dokumentation: https://github.com/FriendsOfSymfony/FOSElasticaBundle/blob/master/doc/setup.md
fos_elastica:
Kunden:
Standard: { URL: '%env(ELASTICSEARCH_URL)%' }
Indizes:
Artikel:
index_name: 'Artikel'
Beharrlichkeit:
# Der Treiber kann Orm, Mongodb oder PHPCr sein
Treiber:orm
Modell: AppEntitySiteFArticleFArticleProp
Anbieter: ~
Finder: ~</pre>
<p>So<span style="white-space:normal;">auf diese Weise</span>fragen Sie meinen Artikelindex ab:</p>
<pre class="brush:php;toolbar:false;"><?php
Namespace AppService;
verwenden Sie FOSElasticaBundleFinderTransformedFinder;
Klasse FArticleService
{
öffentliche Funktion __construct(
privater schreibgeschützter TransformedFinder $finder,
)
{
}
öffentliche Funktionsabfrage (Array $query, int $page, int $size)
{
$results = $this->finder->createRawPaginatorAdapter($query)->getResults(($page * $size) - $size, $size);
}
}</pre>
<p>但是有个错:</p>
<pre class="brush:php;toolbar:false;">In DefinitionErrorExceptionPass.php Zeile 51:
Der Dienst „AppServiceFArticleService“ kann nicht automatisch verknüpft werden: Das Argument „$finder“ der Methode „__construct()“ verweist auf die Klasse „FOSElasticaBundleFinderTransformedFinder“, aber ein solcher Dienst ist nicht vorhanden. Sie sollten diese Klasse möglicherweise mit einem Alias für den vorhandenen Dienst „fos_elastica.finder.articles“ versehen.</pre>
<p>我改了一下</p>
<pre class="brush:php;toolbar:false;"># api/config/services.yaml
Dienstleistungen:
#...
FOSElasticaBundleFinderTransformedFinder:
Alias: fos_elastica.finder.articles
öffentlich: true</pre>
<p>这样还挺好<br /><br />但现在我要增加第二个指标,0百分</p><p><code></code> ;</p>
<pre class="lang-yaml Prettyprint-override"><code># Lesen Sie die Dokumentation: https://github.com/FriendsOfSymfony/FOSElasticaBundle/blob/master/doc/setup.md
fos_elastica:
Kunden:
Standard: { URL: '%env(ELASTICSEARCH_URL)%' }
Indizes:
Artikel:
index_name: 'Artikel'
Beharrlichkeit:
# Der Treiber kann Orm, Mongodb oder PHPCr sein
Treiber: orm
Modell: AppEntitySiteFArticleFArticleProp
Anbieter: ~
Finder: ~
fdocentetes:
Indexname: 'fdocentetes'
Beharrlichkeit:
# Der Treiber kann Orm, Mongodb oder PHPCr sein
Treiber: orm
Modell: AppEntitySageFDocentete
Anbieter: ~
Finder: ~
</code></pre>
<p>文章,所以如果我创建另一个服务fdocteteservice:</p>
<pre class="lang-php Prettyprint-override"><code><?php
Namespace AppService;
verwenden Sie FOSElasticaBundleFinderTransformedFinder;
Klasse FDocenteService
{
öffentliche Funktion __construct(
privater schreibgeschützter TransformedFinder $finder,
)
{
}
öffentliche Funktionsabfrage (Array $query, int $page, int $size)
{
// Dadurch werden die Indexartikel abgefragt, während ich den Index fdocentetes abfragen möchte
$results = $this->finder->createRawPaginatorAdapter($query)->getResults(($page * $size) - $size, $size);
}
}
</code></pre>
<p>那现在咋办</p>
<pre class="brush:php;toolbar:false;">$ php bin/console debug:container | grep fos_elastica.finder
FOSElasticaBundleFinderTransformedFinder-Alias für „fos_elastica.finder.articles“
fos_elastica.finder FOSElasticaBundleFinderTransformedFinder
fos_elastica.finder.articles FOSElasticaBundleFinderTransformedFinder
fos_elastica.finder.fdocentetes FOSElasticaBundleFinderTransformedFinder</pre>
<pre class="brush:php;toolbar:false;">$ php bin/console debug:autowiring | grep fos_elastica.finder
FOSElasticaBundleFinderTransformedFinder (fos_elastica.finder.articles)</pre>
<p><br /></p>