gpt4 book ai didi

php - 关系 hasMany 上的 withCount()

转载 作者:行者123 更新时间:2023-12-05 03:06:34 25 4
gpt4 key购买 nike

我正在尝试对关系中的关系使用 withCount()。我收到的错误是 Method Illuminate\Database\Query\Builder::forums.threads does not exist.

给定这些模型:

class Category extends Model
{
public function forums()
{
return $this->hasMany('App\Forum');
}
}

class Forum extends Model
{
public function category()
{
return $this->belongsTo('App\Category');
}

public function threads()
{
return $this->hasMany('App\Post')->orderByDesc('created_at');
}
}

在我的 Controller 中考虑以下内容:

public function index()
{
$categories = Category::with('forums')->withCount('forums.threads')->orderBy('order')->get();

return view('home', compact('categories'));
}

在我看来如下:

@foreach($categories as $category)
{{ $category->title }}<br>
@foreach($category->forums as $forum)
{{ $forum->title }}<br>
{{ $forum->threads_count }}
@endforeach
@endforeach

我知道我可以简单地从 Controller 中删除 withCount 并使用 $forum->threads->count(),但是是否可以查询计数我想?

如果可以,怎么做?我希望通过预先加载计数(当然不加载所有实际的线程)尽可能快。

最佳答案

闭包中尝试withCount():

$categories = Category::with(['forums'=>function($q){
$q->withCount('threads');
}])->orderBy('order')->get();

关于php - 关系 hasMany 上的 withCount(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49083218/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com