2

名前空間を使用してモデルをセットアップしようとしています。その部分は簡単です。私が苦労しているのは人間関係の部分です。

私はこれらの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');

「My」の前にバックスラッシュを付けても付けなくてもかまいませんが、どちらの場合でも次のようになります。

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 に答える