2014-10-31 4 views
2

Я просто пытаюсь настроить модели с пространствами имен. Эта часть проста. Это часть отношений, с которой мне сложно провести время.Phalcon: отношения модели с пространствами имен

У меня есть эти две модели (они раздевают вниз):

<?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

OK. После того, как много времени, пытаясь понять это, то через 5 минут после размещения, я получаю это ....

Нужно использовать псевдоним:

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

Я оставлю это здесь для тех, кто еще может понадобиться.

+1

Это именно то, с чем я столкнулся сегодня. Спасибо. Для кого-либо еще, попробуйте это, это работает –

+0

Мне потребовались часы, чтобы понять это! Я сделал то же самое для каждого hasMany, ownTo и hasManyToMany, и он исправил все мои проблемы :) – user1855153