2014-09-28 50 views
0

我想搜索给定用户在给定帖子上制作的相似模型。 我有一个模型为:邮政根据父母在laravel中查找相关模型

class Post extends \Eloquent 
{ 


    protected $fillable = []; 

    public function likes() 
    { 
     return $this->morphMany('Like', 'likeable'); 
    } 


} 

和一个模型:

class Like extends \Eloquent 
{ 
    protected $fillable = []; 

    /** 
    * @return \Illuminate\Database\Eloquent\Relations\MorphTo 
    */ 
    public function likeable() 
    { 
     return $this->morphTo(); 
    } 

    /** 
    * @return \Illuminate\Database\Eloquent\Relations\BelongsTo 
    */ 
    public function owner() 
    { 
     return $this->belongsTo('User', 'owner_id'); 
    } 

} 

和默认用户laravel提供模型。

现在我已经询问模型中使用POST_ID像

$post=Post::find(10); 

用户找到一个职位模型像

$user=User::find(1); 

现在我想找到像这个用户提出(1)关于的帖子(10) laravel有没有这方面的功能。

我知道,我可以直接查询像使用原始其中功能

\Like::whereLikeableId('10')->whereLikeableType('Post')->whereUserId('1')->get(); 

但是这看起来丑陋,我想知道这样做的laravel方式。

回答

0

所有你需要的是:

$like = $post->likes()->where('user_id', 1)->first(); 
+0

谢谢您的回答,即工作。有没有办法像这样做:Like :: likeable($ post) - > where('user_id',1),我的意思是相反的方式,这样就变得独立于父模型 – manish 2014-09-28 19:53:40

+0

您可以使用'whereHas'但我不认为这会让事情变得更容易。你为什么要这样? – 2014-09-29 06:46:14