Laravel 如何使用 whereHas return 关联模型数据

Laravel how to return related model data using whereHas

我有 Member 型号 Ledger 型号

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

如果我运行下面的脚本

 $members = Member::whereHas('ledger', function($q){
       $q->where('created_at', '2017-03-26 14:15:26');
 })->get();

我只得到会员数据,没有账本记录。

如果我运行下面的脚本

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

我得到具有所需分类帐记录的成员很好,但它也 returns 其他分类帐记录 = null 的成员,我不需要没有分类帐记录的成员。 (即我只需要 ledger.created = '2017-03-26 14:15:26 的成员以及分类帐记录)

我怎样才能做到这一点?

我正在使用Laravel 5.3

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

$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);