Jak správně nastavit QuoteStrategy v Nettrine?
- obud
- Člen | 15
Zdravím,
migruji jeden projekt z Kdyby/Doctrine na Nettrine s Nette 3 a nemůžu přijít na to, jak v NEONu správně nastavit quoteStrategy.
Původně v Kdyby/Doctrine jsem měl:
doctrine:
...
quoteStrategy: App\Config\QuoteStrategy
<?php
declare(strict_types=1);
namespace App\Config;
use Doctrine\DBAL\Platforms\AbstractPlatform;
use Doctrine\ORM\Mapping\ClassMetadata;
use Doctrine\ORM\Mapping\DefaultQuoteStrategy;
class QuoteStrategy extends DefaultQuoteStrategy
{
public function getColumnName($fieldName, ClassMetadata $class, AbstractPlatform $platform)
{
$columnName = '`' . $class->fieldMappings[$fieldName]['columnName'] . '`';
return isset($class->fieldMappings[$fieldName]['quoted'])
? $platform->quoteIdentifier($columnName)
: $columnName;
}
}
Pro Nettrine jsem zkusil v NEONu upravit na následující, což vyvolá
výjimku Nette\DI\InvalidConfigurationException
(The option ‚nettrine.orm › configuration › quoteStrategy‘ expects
to be Nette\DI\Definitions\Statement, string ‚App\\Config\\QuoteStrategy‘
given.).
nettrine.orm:
configuration:
quoteStrategy: App\Config\QuoteStrategy
Schema konfigurace NEONu pro quoteStrategy je zápsáno jako
'quoteStrategy' => Expect::type(Statement::class),
(pull request).
Z tohoto zápisu mi bohužel není jasné, v jakém tvaru má hodnota
parametru quoteStrategy být.
Poradil by mi prosím někdo, jak toto vyřešit a správně nastavit quoteStrategy? A uvedená třída QuoteStrategy bude funkční i s Nettrine?
Díky.
- obud
- Člen | 15
CZechBoY napsal(a):
Zkus si z ty tridy nejdriv udelat sluzbu a pak predat referenci na sluzbu.
Neco ve stylu
services: - App\Config\QuoteStrategy nettrine.orm: configuration: quoteStrategy: @App\Config\QuoteStrategy
Zkusil jsem ten NEON upravit a pořád tam je string (sice tentokrát trochu kratší hláška)…
Nette\DI\InvalidConfigurationException
The option ‚nettrine.orm › configuration › quoteStrategy‘ expects to
be Nette\DI\Definitions\Statement, string given.
Když si na zkoušku vyedituju /vendor/nettrine/orm/src/DI/OrmExtension.php, tak quoteStrategy s tím stringem funguje.
...
'namingStrategy' => Expect::string(UnderscoreNamingStrategy::class)->nullable(),
'quoteStrategy' => Expect::string(), //Expect::type(Statement::class),
'entityListenerResolver' => Expect::string(),
...
Jak tedy z toho ven?
Díky.
Editoval obud (17. 7. 2020 8:42)