%PDF- %PDF-
| Direktori : /home/bitrix/www/bitrix/modules/main/lib/orm/fields/validators/ |
| Current File : //home/bitrix/www/bitrix/modules/main/lib/orm/fields/validators/foreignvalidator.php |
<?php
/**
* Bitrix Framework
* @package bitrix
* @subpackage main
* @copyright 2001-2014 Bitrix
*/
namespace Bitrix\Main\ORM\Fields\Validators;
use Bitrix\Main\ORM;
use Bitrix\Main\Localization\Loc;
Loc::loadMessages(__FILE__);
/**
* Checks if field value exists in referenced entity
*
* example: new Foreign(GroupTable::getEntity()->getField('ID'));
*
* @package Bitrix\Main\ORM\Validator
*/
class ForeignValidator extends Validator
{
protected $errorPhraseCode = 'MAIN_ENTITY_VALIDATOR_FOREIGN';
protected $reference = null;
protected $filter = null;
const NOT_EXISTS = 'BX_FOREIGN_NOT_EXISTS';
/**
* @param ORM\Fields\Field $reference
* @param array $filter
*/
public function __construct(ORM\Fields\Field $reference, array $filter = array())
{
$this->reference = $reference;
$this->filter = $filter;
parent::__construct();
}
public function validate($value, $primary, array $row, ORM\Fields\Field $field)
{
$query = new ORM\Query\Query($this->reference->getEntity());
$query->setFilter(array('='.$this->reference->getName() => $value) + $this->filter);
$query->setLimit(1);
$result = $query->exec();
if($result->fetch())
{
return true;
}
return new ORM\Fields\FieldError($field, $this->getErrorMessage($value, $field), self::NOT_EXISTS);
}
}