首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel如何使用whereHas返回相关模型数据

Laravel如何使用whereHas返回相关模型数据
EN

Stack Overflow用户
提问于 2017-03-26 10:00:30
回答 1查看 792关注 0票数 4

我有Member模型Ledger模型

代码语言:javascript
复制
class Member extends Model
{
    public function ledger()
    {
        return $this->hasMany('App\Ledger','user_id');
    }
}

我必须获得成员的分类账记录(需要成员和分类账数据),其中ledger.created_at =特定日期,例如ledger.created_at = 2017-03-26 14:15:26

如果我运行以下脚本

代码语言:javascript
复制
 $members = Member::whereHas('ledger', function($q){
       $q->where('created_at', '2017-03-26 14:15:26');
 })->get();

我只得到会员的资料,没有分类账记录。

如果我运行以下脚本

代码语言:javascript
复制
 $members =  Member::with(['ledger' => function($q) {
         $q->where('created_at', '2017-03-26 14:15:26');
     }])->where('type','=','5')->paginate(10);

我得到成员与所需的分类账记录是好的,但它也返回其他成员,其中分类账记录= null,我不需要的成员谁没有分类账记录。(我只需要ledger.created = '2017-03-26 14:15:26的会员和分类账记录)

我怎样才能做到这一点?

我用的是Laravel 5.3

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-26 10:04:16

使用whereHas()过滤成员,使用with()加载ledger数据:

代码语言:javascript
复制
$members = Member::whereHas('ledger', function($q) {
    $q->where('created_at', '2017-03-26 14:15:26');
})
->with(['ledger' => function($q) {
    $q->where('created_at', '2017-03-26 14:15:26');
}])
->where('type', 5)
->paginate(10);
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43027350

复制
相关文章

相似问题

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