我只是想设置带有命名空间的模型。那部分很简单。这是关系的一部分,我正在艰难度过。
我有这两个模型(这些模型被剥离):
<?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();
......这是相当冗长的,但无论如何。我仍然得到一个“方法不存在”的错误。
我错过了什么?
答案 0 :(得分:4)
行。经过大量时间试图解决这个问题,然后在发布后5分钟,我明白了......
必须使用别名:
$this->hasMany('id', 'My\\App\\V1\\Models\\Movies', 'genre_id', ['alias'=>'Movies']);
我会将此留给其他可能需要它的人。