These are chat archives for PHPixie/Hotline

3rd
Nov 2015
bobdubnod
@bobdubnod
Nov 03 2015 05:55
@dracony Понял. Спасибо, под вечер не задумывался над этим.)
Roman Tsiupa
@dracony
Nov 03 2015 10:15
happy late halloween)
bobdubnod
@bobdubnod
Nov 03 2015 11:11

Столкнулся с моментом.
Код

            $ignorePhonesList = $orm->query('ignore_phone')
                ->find(array('phone'))
                ->asArray(true);

Выдает ошибку

Undefined index: ignore_phone

Если в ->find() не указывать массив выбираемых колонок, то все работает нормально, выдает записи с полями id и phone.

О, классная феечка, хэллоуин, классно.))
Roman Tsiupa
@dracony
Nov 03 2015 11:11
=)
a mozhno trejs oshybki ?
i orm config
bobdubnod
@bobdubnod
Nov 03 2015 11:18

Undefined index: ignore_phone
/var/www/subscribe.dev/vendor/phpixie/orm/src/PHPixie/ORM/Maps/Map.php:24
21
22 public function get($modelName, $propertyName)
23 {

       return $this->sides[$modelName][$propertyName];

25 }
26
27 public function getModelSides($modelName)
/var/www/subscribe.dev/vendor/phpixie/orm/src/PHPixie/ORM/Mappers/Preload.php:21
18 foreach($preload->properties() as $property) {
19
20 $propertyName = $property->propertyName();
$side = $this->preloadMap->get($modelName, $propertyName);
22
23 $relationship = $this->relationships->get($side->relationshipType());
24 $handler = $relationship->handler();
/var/www/subscribe.dev/vendor/phpixie/orm/src/PHPixie/ORM/Mappers/Query.php:78
75 if($preload !== null) {
76 $preloadPlan = $plan->preloadPlan();
77 $preloadMapper = $this->mappers->preload();
$preloadMapper->map($preloadingProxy, $modelName, $preload, $resultStep, $preloadPlan);
79 }
80
81 return $plan;
/var/www/subscribe.dev/vendor/phpixie/orm/src/PHPixie/ORM/Models/Type/Database/Implementation/Query.php:155
152 $preloads->add($item);
153 }
154

       return $this->queryMapper->mapFind($this, $preloads);

156 }
157
158
/var/www/subscribe.dev/vendor/phpixie/orm/src/PHPixie/ORM/Models/Type/Database/Implementation/Query.php:119
116
117 public function find($preload = array())
118 {
return $this->planFind($preload)->execute();
120 }
121
122 /**
/var/www/subscribe.dev/bundles/app/src/Project/App/HTTPProcessors/ImportUsers.php:201
198
199 $orm = $this->orm;
200 $ignorePhonesList = $orm->query('ignore_phone')
->find(array('phone'))
202 ->asArray(true);
203 var_dump($ignorePhonesList);
204 exit();

config orm:

return array(
    'models' => array(
        'news' => array(
            'table'    => 'news'
        ),
    )
);

но если очистить его содержимое, то ошибка меняется:

array_key_exists() expects parameter 2 to be array, integer given
/var/www/subscribe.dev/vendor/phpixie/slice/src/PHPixie/Slice/Type/ArrayData.php:26
23 if ($path !== null) {
24 list($parentPath, $key) = $this->splitPath($path);
25 $parent = &$this->findGroup($parentPath);

           if ($parent !== null && array_key_exists($key, $parent)) {

27 return $parent[$key];
28 }
29
/var/www/subscribe.dev/vendor/phpixie/slice/src/PHPixie/Slice/Type/ArrayData.php:26
23 if ($path !== null) {
24 list($parentPath, $key) = $this->splitPath($path);
25 $parent = &$this->findGroup($parentPath);
if ($parent !== null && array_key_exists($key, $parent)) {
27 return $parent[$key];
28 }
29
/var/www/subscribe.dev/vendor/phpixie/config/src/PHPixie/Config/Storages/Type/File.php:26
23
24 public function getData($path = null, $isRequired = false, $default = null)
25 {
return $this->arrayData()->getData($path, $isRequired, $default);
27 }
28
29 public function set($path, $value)
/var/www/subscribe.dev/vendor/phpixie/config/src/PHPixie/Config/Storages/Type/Directory.php:33
30 if (!empty($key)) {
31 list($storage, $key) = $this->getStorageAndKey($key);
32
return $storage->getData($key, $isRequired, $default);
34 }
35
36 $data = $this->storage()->get();
/var/www/subscribe.dev/vendor/phpixie/config/src/PHPixie/Config/Storages/Type/Directory.php:33
30 if (!empty($key)) {
31 list($storage, $key) = $this->getStorageAndKey($key);
32
return $storage->getData($key, $isRequired, $default);
34 }
35
36 $data = $this->storage()->get();
/var/www/subscribe.dev/vendor/phpixie/slice/src/PHPixie/Slice/Type/Slice.php:20
17 public function getData($path = null, $isRequired = false, $default = null)
18 {
19 $path = $this->dataPath($path);
return $this->data->getData($path, $isRequired, $default);
21 }
22
23 public function slice($path = null)
/var/www/subscribe.dev/vendor/phpixie/slice/src/PHPixie/Slice/Data/Implementation.php:16
13
14 public function get($key = null, $default = null)
15 {
return $this->getData($key, false, $default);
17 }
18
19 public function getRequired($key = null)
/var/www/subscribe.dev/vendor/phpixie/bundle-framework/src/PHPixie/BundleFramework/Configuration/ORM.php:46
43 $relationships = array();
44
45 foreach($configMap as $configData) {
$modelsData = $configData->get('models', array());
47 foreach($modelsData as $name => $modelData) {
48 $models[$name] = $modelData;
49 }
/var/www/subscribe.dev/vendor/phpixie/bundle-framework/src/PHPixie/BundleFramework/Configuration/ORM.php:32
29 {
30 if(!array_key_exists($name, $this->instances)) {
31 $method = 'build'.ucfirst($name);
$this->instances[$name] = $this->$method();
33 }
34
35 return $this->instances[$name];
/var/www/subscribe.dev/vendor/phpixie/bundle-framework/src/PHPixie/BundleFramework/Configuration/ORM.php:20
17
18 public function configData()
19 {
return $this->instance('configData');
21 }
22
23 public function wrappers()
/var/www/subscribe.dev/vendor/phpixie/bundle-framework/src/PHPixie/BundleFramework/Configuration.php:47
44
45 public function ormConfig()
46 {
return $this->orm()->configData()

и далее вплоть до
/var/www/subscribe.dev/vendor/phpixie/processors/src/PHPixie/Processors/Processor/Chain.php:17
14 public function process($value)
15 {
16 foreach($this->processors as $processor) {

           $value = $processor->process($value);

18 }
19
20 return $value;
/var/www/subscribe.dev/vendor/phpixie/processors/src/PHPixie/Processors/Processor/Chain.php:17
14 public function process($value)
15 {
16 foreach($this->processors as $processor) {
$value = $processor->process($value);
18 }
19
20 return $value;
/var/www/subscribe.dev/vendor/phpixie/processors/src/PHPixie/Processors/Processor/CatchException.php:19
16 public function process($value)
17 {
18 try {
return $this->valueProcessor->process($value);
20
21 } catch(\Exception $exception) {
22 return $this->exceptionProcessor->process($exception);
/var/www/subscribe.dev/vendor/phpixie/framework/src/PHPixie/Framework/HTTP.php:60
57 $http = $this->builder->components()->http();
58 $serverRequest = $http->sapiServerRequest();
59
$response = $this->processor()->process($serverRequest);
61
62 $http->output(
63 $response,
/var/www/subscribe.dev/vendor/phpixie/framework/src/PHPixie/Framework.php:24
21
22 public function processHttpSapiRequest()
23 {
$this->builder->http()->processSapiRequest();
25 }
26
27 public function processHttpServerRequest($serverRequest)
/var/www/subscribe.dev/web/index.php:14
11
12 $framework = new Project\Framework();
13 $framework->registerDebugHandlers();
$framework->processHttpSapiRequest();

(посередине не стал копировать, не вставляется все равно, слишком много)
Roman Tsiupa
@dracony
Nov 03 2015 11:24
можно было куда-то не в чат))
ну лан)
ну так у тебя в конфиге связь не настроена
//config orm:
return array(
    'models' => array(
        'news' => array(
            'table'    => 'news'
        ),
    )
);
тут недостает связей
типа
return array(
    'models' => array(
        'news' => array(
            'table'    => 'news'
        ),
    ),
    'relationships' => array(
        array(
             'type' => 'oneToMany',
             'owner' => 'phone',
             'items' => 'ignore_phone'
        )
    )
);
какая структура бд?
bobdubnod
@bobdubnod
Nov 03 2015 11:59
Понятно. Я неверно воспользовался методом find().
Я не использую связи. Как мне взять значения только одной колонки из таблицы? Т.е. это сама таблица, в ней есть поле phone, как его получить только, а не все? Кажется, спрашивал, но не нашел.
Кстати, в случае, если связи не настроены - это же можно отловить. Мол, в данном месте запрашивается поле или там таблица, которые не настроены. А то выводится системная ошибка, а конкретно о чем подсказки нет.
Roman Tsiupa
@dracony
Nov 03 2015 13:26
cherez ORM ne poluchisa
delaj cherez Database
$database->get()->selectQuery()->table('phone')->field('ignore_phone')->..->execute();