基于父级在laravel中查找相关模型

时间:2014-09-28 19:18:32

标签: php laravel laravel-4 eloquent

我想搜索特定用户在给定帖子上做出的喜欢。 我有一个发布模型:发布

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) la lavel中是否有任何可用的功能。

我知道我可以直接查询Like使用raw where function as

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

但这看起来很难看,我想知道这样做的方式。

1 个答案:

答案 0 :(得分:0)

您只需要:

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