我无法传递将其转换为数组的第一个查询集合。这是我的控制器
$memberfilters = MemberProfile::join('membership_histories', 'membership_histories.profile_id', '=','member_profiles.id')
->select('member_profiles.id','member_profiles.last_name','member_profiles.first_name','member_profiles.middle_name','member_profiles.name_ext','member_profiles.birthday','member_profiles.encoded_by')
->addSelect(DB::raw('membership_histories.profile_id, membership_histories.log_reason, max(membership_histories.effective_date) as date, membership_histories.membership_type, membership_histories.country_name, membership_histories.sub_region_name'))
->orderBy('member_profiles.last_name','ASC')
->where('membership_histories.country_name', 'Philippines')
->groupBy('membership_histories.profile_id')
->orderBy('date', 'desc')
->get();
$members = MemberProfile::join('membership_histories', 'membership_histories.profile_id', '=','member_profiles.id')
->whereIn('member_profiles.id', $memberfilters->toArray())
->get();
我将在第二个查询$ members上应用更多where方法,这就是为什么我必须使用whereIn将它传递给那里。有了这个逻辑,我的刀片视图中没有结果'0'
@Alexey Mezenin
当我使用->whereIn('member_profiles.id', $memberfilters->pluck('id'))
时,我收到此错误
ComputeAge.php第13行中的ErrorException: 试图获得非对象的属性
这是我的ComputeAge.php
namespace App\Library;
use App\MemberProfile;
use DateTime;
class ComputeAge
{
// Compute age based on given birthday.
public static function show($id)
{
$from = new DateTime(MemberProfile::find($id)->birthday);
$to = new DateTime('today');
$age = $from->diff($to)->y;
return $age;
}
}
答案 0 :(得分:1)
您可以像Alexey一样回答pluck()
解决您的第一个问题。适合您的年龄计算问题。你可以利用碳来做到这一点。
<?php
namespace App\Library;
use Carbon\Carbon;
use App\MemberProfile;
class ComputeAge
{
public static function show($id)
{
$user = MemberProfile::findOrFail($id);
$age = $user->birthday->diffInYears(Carbon::now(), false);
return $age;
}
}
如果您的生日字段不是碳的实例,请执行此操作。
$age = Carbon::parse($user->birthday)->diffInYears(Carbon::now(), false);
如果您以后不需要生日值的负值,那么您只需拨打diffInYears()
。
答案 1 :(得分:0)
使用pluck()
,例如:
->whereIn('member_profiles.id', $memberfilters->pluck('id')) // Or member_profiles.id instead of id