この強力な機能を利用するために、4.1 に移行しました。個々の 'morphedByXxxx' リレーションを取得するときはすべて正しく機能しているように見えますが、特定のタグが属するすべてのモデルを取得しようとすると、エラーが発生するか、結果が得られません。
$tag = Tag::find(45); //Tag model name = 'awesome'
//returns an Illuminate\Database\Eloquent\Collection of zero length
$tag->taggable;
//returns Illuminate\Database\Eloquent\Relations\MorphToMany Builder class
$tag->taggable();
//returns a populated Collection of Video models
$tag->videos()->get();
//returns a populated Collection of Post models
$tag->posts()->get();
私のタグ モデル クラスは次のようになります。
class Tag extends Eloquent
{
protected $table = 'tags';
public $timestamps = true;
public function taggable()
{
//none of these seem to function as expected,
//both return an instance of MorphToMany
//return $this->morphedByMany('Tag', 'taggable');
return $this->morphToMany('Tag', 'taggable');
//this throws an error about missing argument 1
//return $this->morphToMany();
}
public function posts()
{
return $this->morphedByMany('Post', 'taggable');
}
public function videos()
{
return $this->morphedByMany('Video', 'taggable');
}
}
Post および Video モデルは次のようになります。
class Post extends Eloquent
{
protected $table = 'posts';
public $timestamps = true;
public function tags()
{
return $this->morphToMany('Tag', 'taggable');
}
}
投稿や動画にタグを追加/削除したり、関連する投稿や任意のタグの動画を取得したりできますが、タグ名「awesome」を持つすべてのモデルを取得する適切な方法は何ですか?