首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从第二个关系中检索有限的结果集

从第二个关系中检索有限的结果集
EN

Stack Overflow用户
提问于 2017-02-16 22:30:45
回答 1查看 21关注 0票数 0

我的模型如下:

Account ->检查->结果

代码语言:javascript
复制
class Account extends Model {
  public function checks() {
    return $this->hasMany('App\Check');
  }
}

class Check extends Model {
  public function results() {
    return $this->hasMany('App\Result');
   }
}

class Result extends Model {
  public function check() {
    return $this->belongsTo('App\Check');
   }
}

现在我正尝试从一个控制器来做这样的事情:

代码语言:javascript
复制
$results = Account::find(1)->checks()->results()->where('result_type', 'ERROR')->orderBy('result.id', 'desc')->limit(25)->get();

在checks()之后,它显然不起作用,我的get和error表明没有定义result(),这可能是因为它正在查找。

如果不做2-3次查询,我如何才能实现它?

我不想使用QueryBuilder来“手动”完成它,我想让它更有说服力。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-16 22:34:59

您可以添加一个关系来直接连接帐户和结果,并使用Check模型作为中间层。

代码语言:javascript
复制
// on the Account model
public function results() {
    return $this->hasManyThrough('App\Result', 'App\Check');
}

然后,您可以直接在帐户上执行->results()并从那里进行查询。:)换句话说,您的查询将正常工作,您只需要删除->checks()调用。

文档:https://laravel.com/docs/5.4/eloquent-relationships#has-many-through

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42276786

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档