2

我只是想用命名空间设置模型。那部分很简单。这是我遇到困难的关系部分。

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

<?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();

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

我错过了什么?

4

1 回答 1

4

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

必须使用别名:

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

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

于 2014-10-31T18:12:51.680 回答