gpt4 book ai didi

laravel-5 - 一个模型实例上的 Laravel 查询关系

转载 作者:行者123 更新时间:2023-12-01 03:21:12 27 4
gpt4 key购买 nike

我知道我可以使用 count()在 Laravel 中查询 Eloquent 关系,如下所示:

if(count($question->answers()))

哪里 answers()hasMany关系:
 public function answers()
{
return $this->hasMany('App\Models\Answer', 'question_id');
}

我的问题是,当 $question 时我该怎么做?不是整个集合而是一个模型实例?
$question = Question::where('id',$key)->first(); 

如何使用 count() 查询上述问题,并且仅查询该问题的潜在关系?

我总是收到 count()大于零,即使所选问题没有相关答案,这意味着我的 if 块总是运行并返回无根据的 null值(value)观:
if(count($question->answers()))
{
//returns nulls
}

最佳答案

自调用 $question->answers()正在返回 QueryBuilder实例,调用 count()很可能总是返回 1 .如果您访问 $question->answers (作为 property 而不是 method ),或者使用完整的逻辑 $question->answers()->get();它应该正确返回 Collection , 其中 count()将在以下情况下正常运行:

$question = Question::where('id',$key)->first();

if(count($question->answers) > 0){
// Do something
}

// OR

if(count($question->answers()->get()) > 0){
...
}

正如@maraboc 所建议的,您也可以急切加载您的 $questionanswers使用 ->with()条款:
$question = Question::with(["answers"])->where('id',$key)->first();

但即使在这种情况下, $question->answers()仍然会返回 QueryBuilder实例,所以访问它作为 propertycount()才能正常工作。

关于laravel-5 - 一个模型实例上的 Laravel 查询关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44973597/

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