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);
我有 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);