मैं सिद्धांत फ़िल्टर का उपयोग करता हूं और हाल ही में देखा है कि कथन हटाने के लिए फ़िल्टर लागू नहीं किए गए हैं। मैंने प्रलेखन और Google के माध्यम से खोदने की कोशिश की है, लेकिन रहस्य अनसुलझा रहता है।क्या Doctrine2 कथन हटाने के लिए फ़िल्टर लागू करता है
उदाहरण के लिए मैं फिल्टर जो कंपनी इतना की तरह हर चयन क्वेरी के लिए उपयोगकर्ता जोड़ता है है:
$userRepo->find(12);
और
चयन से संशोधित किया गया है .... उपयोगकर्ता t0 से कहां t0.id = 12
मेंका चयन करें .... उपयोगकर्ता t0 से कहां t0.id = 12 और (t0.company_id = '6')
शांत, कि मैं क्या जरूरत है।
मुझे परेशान करता है कि हटाए गए बयानों को छूटा नहीं लगता है। क्या किसी को पता है कि यह डिफ़ॉल्ट सिद्धांत वास्तुकला है या मेरी कॉन्फ़िगरेशन गलत है?
फिल्टर
use Doctrine\ORM\Mapping\ClassMetaData;
use Doctrine\ORM\Query\Filter\SQLFilter;
use Doctrine\Common\Annotations\Reader;
class CompanyAware extends SQLFilter
{
/**
* @var Reader
*/
protected $reader;
/**
* @param ClassMetaData $targetEntity
* @param string $targetTableAlias
*
* @return string
*/
public function addFilterConstraint(ClassMetadata $targetEntity, $targetTableAlias)
{
$query = '';
$ann = 'Mrok\\PortalBundle\\Annotation\\CompanyAware';
$isAware = $this->reader->getClassAnnotation($targetEntity->getReflectionClass(), $ann);
if ($isAware) {
$id = $this->getParameter('id');
$query = sprintf('%s.company_id = %s', $targetTableAlias, $id);
}
return $query;
}
public function setAnnotationReader(Reader $reader)
{
$this->reader = $reader;
}
}
हम अपने एसक्यूएल फिल्टर देख सकते हैं? – Federkun