我遵循example here并建立了多对多的多态关系。我有:
tags:
-PHP
-movie
如果我运行
Route::get('tag/{id}/', function($id){
$tag = Tag::find($id);
return $tag;
});
该网站将给我这个
{"id":2,"name":"movie","created_at":null,"updated_at":null}
如果我很幸运或者我确定这个标签属于帖子,当我使用
时return $tag->posts;
它将返回包含帖子信息的数组。但是,如何确定标签所属的所有者(帖子或视频)的类型,以便我可以使用适当的功能(如帖子或视频)? 在一对多的多态关系示例中,我可以查看imageable_type以了解我正在处理的所有者(订单,员工)的类型。但我无法在多对多的多态中检索taggable_type。我试过了
Route::get('tag/{id}/', function($id){
$tag = Tag::find($id);
return $tag->taggable;
});
但没有发生任何事。如何检索此属性?我正在使用Laravel 5.2.39。
答案 0 :(得分:1)
一种方法是使用instanceof
编辑我可能误解了它 - 但我并不完全确定。如果您想知道要调用哪个所有者,请确定要返回的模型类型(例如,使用instanceof),然后调用该模型中定义的正确belongsTo
方法。 / p>
use App\Post;
use App\Video;
if($tag instanceof Post) {
// Do something
} elseif($tag instanceof Video) {
// Do something else
}