<已解决>如何在查询时或查询结果集中设置预加载关联关系的$visible属性

想请教一下: 如何在查询时或查询结果集中设置预加载关联关系的$visible属性

问题描述:

假设有以下两个模型

class Author extends Model
{
    public function articles()
    {
        return $this->hasMany(Article::class);
    }
}
class Article extends Model
{
    //假设 有id, author_id, content, view_count, created_at, updated_at等字段
    public function author()
    {
        return $this->belongTo(Author::class);
    }
}

在按照author进行分页时 想要指定预加载关联关系的visible 要怎么设置? 只能遍历一遍吗?

$authors=Author::with("article")->paginate();
foreach($authors as $author){
    $author->articles->makeVisible(["id","view_count"]);
}
  • 上面举的authorarticle的例子可能并不是很恰当, 主要是想说明大概的问题
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
最佳答案
$authors = Author::with("article:id, author_id, content, view_count")->paginate();

必须包含关联字段

4年前 评论
讨论数量: 2
$authors = Author::with("article:id, author_id, content, view_count")->paginate();

必须包含关联字段

4年前 评论

可以用 resources 或者 with('article:id,view_count') 指定字段可以达到相同的效果

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!