【问题标题】:Finding related model in laravel based on parent基于父级在laravel中查找相关模型
【发布时间】:2014-11-23 04:22:49
【问题描述】:

我想搜索给定用户在给定帖子上的点赞。 我有一个 Post 模型:Post

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 中提供的默认 User 模型。

现在我已经查询 Post 模型以使用 post_id like 找到一篇帖子

$post=Post::find(10);

用户模型类似

$user=User::find(1);

现在我想在 Post(10) 上找到这个 User(1) 的 Like,laravel 中是否有任何可用的功能。

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

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

但这看起来很难看,我想知道 laravel 的做法。

【问题讨论】:

    标签: php laravel laravel-4 eloquent


    【解决方案1】:

    你只需要:

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

    【讨论】:

    • 感谢您的回答,成功了。有没有办法像这样:Like::likeable($post)->where('user_id', 1),我的意思是反过来,这样它就独立于父模型
    • 您可以使用whereHas,但我认为这不会让事情变得更容易。你为什么想要那个?
    猜你喜欢
    • 1970-01-01
    • 2020-04-18
    • 2019-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-29
    • 1970-01-01
    • 2021-04-24
    相关资源
    最近更新 更多