【问题标题】:Phalcon: Model relationships with NamespacesPhalcon:与命名空间的模型关系
【发布时间】:2014-10-31 18:00:22
【问题描述】:

我只是想建立带有命名空间的模型。那部分很简单。这是我遇到困难的关系部分。

我有这两个模型(这些都被剥离了):

<?php

namespace My\App\V1\Models;

class Movies extends \My\Namespace\Path\Base
{
}

?>



<?php

namespace My\App\V1\Models

class Genres extends \My\Namespace\Path\Base
{
    public function initialize()
    {
        $this->hasMany('id', 'Movies', 'genre_id');
    }

    public function howManyMovies()
    {
        return $this->countMovies();
    }
}

?>

所以...按原样,这会给我:

Cannot redeclare class My\App\V1\Models\Movies ....

所以,我开始认为它与命名空间有关。所以...我将 hasMany 更改为:

$this->hasMany('id', 'My\\App\\V1\\Models\\Movies', 'genre_id');

我可以在“我的”前面加上反斜杠,但无论哪种方式,我都会得到:

The method "countMovies" doesn't exist on model "My\App\V1\Models\Genres"

我尝试将该行更改为:

return $this->countMyAppV1ModelsMovies();

... 这很冗长,但无论如何。我仍然收到“方法不存在”错误。

我错过了什么?

【问题讨论】:

    标签: model namespaces phalcon magic-function


    【解决方案1】:

    好的。经过很长时间试图弄清楚这一点,然后在发布后 5 分钟,我明白了....

    必须使用别名:

    $this->hasMany('id', 'My\\App\\V1\\Models\\Movies', 'genre_id', ['alias'=>'Movies']);
    

    我会把它留在这里给其他可能需要它的人。

    【讨论】:

    • 这正是我今天所面临的。谢谢你。对于其他人,试试这个,它有效
    • 我花了好几个小时才弄明白!我对每个 hasMany、belongsTo 和 hasManyToMany 都做了同样的事情,它解决了我所有的问题 :)
    猜你喜欢
    • 1970-01-01
    • 2023-03-12
    • 2012-09-10
    • 1970-01-01
    • 2015-01-04
    • 2015-11-14
    • 1970-01-01
    • 2014-04-30
    • 1970-01-01
    相关资源
    最近更新 更多