【问题标题】:Limit eager loaded comments [duplicate]限制急切加载的评论[重复]
【发布时间】:2013-06-02 08:13:31
【问题描述】:

我想用 cmets 加载我的所有新闻。现在,我正在检索所有 cmets 的所有新闻。但是,我只希望每个新闻项目显示 2 个 cmets。

$news = News::with('user')->with('comments.user')->orderBy('created_at', 'desc')->get();

如何每条新闻只取出 2 个 cmets?

【问题讨论】:

    标签: php sql laravel laravel-4 eloquent


    【解决方案1】:

    我不确定这是否可能。

    你可以这样做:

    News::with(array('comments.user' => function($q) { $q->take(2); }));
    

    但它需要从整个集合中提取两个 cmets(生成的查询看起来像 SELECT * FROM users WHERE id IN (...) LIMIT 2)。

    我遇到了同样的问题。我以一种肮脏的方式完成了它 - 遍历新闻记录,获取两个 cmets 并缓存整个内容。

    【讨论】:

    • 使用这种方法它只会抓取整个页面的 2 个 cmets :-P 我想我将不得不计算 cmets 并且只选择最新的两个
    • @radmen 你能告诉我你用那种肮脏的方式是怎么做的吗?
    猜你喜欢
    • 2017-05-30
    • 2016-02-09
    • 1970-01-01
    • 2019-05-19
    • 1970-01-01
    • 1970-01-01
    • 2019-12-20
    • 2011-09-22
    相关资源
    最近更新 更多