We have moved our forum to GitHub Discussions. For questions about Phalcon v3/v4/v5 you can visit here and for Phalcon v6 here.

Crash Apache when executing query

При попытке выполнить следующий статический метод:

class User extends \Phalcon\Mvc\Model {
    public static function getRandomUsersForMainPage() {
        $query = new Query("SELECT * FROM Users WHERE Users.skin != 0 ORDER BY RAND() LIMIT 5");
        return $query->execute();
    }
}

Apache падает со следующими указаниями (Windows):

Я думал получить исключение о какой-то ошибке внутри самого запроса, но сервер просто умирает и на этом всё, отыскать проблему удаётся только методом тыка. Думаю эта проблема касается не только запроса, а механизма внутри Phalcon, если это действите приводит к падению сервера.


When I'm try to execute the following static method:

class User extends \Phalcon\Mvc\Model {
    public static function getRandomUsersForMainPage() {
        $query = new Query("SELECT * FROM Users WHERE Users.skin != 0 ORDER BY RAND() LIMIT 5");
        return $query->execute();
    }
}

Apache falls with the following (Windows):

I was thinking I get an exception of some error within the query itself, but the server just die and that's it, find the problem can only be successful at random. I think this issue is not only a request, but the mechanism inside the Phalcon, if this action leads to a crash server.

Fast Google Translate work.

Can you translate it into english ?...

Append into query constructor $query = new Query("SQL",$this->getDI());

edited Aug '14

Я нашёл частичную причину проблемы: namespace. Все модели находятся в пространстве имён Ely\Models и даже сами модели не могут отыскать связанные значения, к примеру вот так:

// app/models/Users.php

namespace Ely\Models;

use Phalcon\Mvc\Model\Validator\Email as Email,
    Phalcon\Mvc\Model\Query,
    Ely\Models\SkinsHashes;

class Users extends \Phalcon\Mvc\Model {
    public function initialize () {
        $this->hasOne("skin", "SkinsHashes", "id");
    }

    public function getSkin() {
        if ($this->skin != 0)
            return $this->getRelated("SkinsHashes");
        else
            return new SkinsHashes();
    }
}

// app/models/SkinsHashes.php

namespace Ely\Models;

class SkinsHashes extends \Phalcon\Mvc\Model {
    //...
}

Если попытаться выполнить что-то такое:

$user = Users::findFirst(15);
$skin = $user->getSkin();

То получается вот такая вот ошибка: "Model 'SkinsHashes' could not be loaded", но если убрать все namespace то всё начинает прекрасно работать.


I found a partial cause of the problem: namespace. All models are in the namespace Ely\Models and even the models themselves can not find the associated values, for example like this:

See 1 code listing

If you try to do something like this:

See 2 code listing

It turns out that's so that's a mistake: "Model 'SkinsHashes' could not be loaded", but if you remove all the namespace then everything starts to work fine.