2017-06-05 9 views
0

配列に変換する最初のクエリコレクションを渡すことはできません。ここに私のコントローラは、私は2番目のクエリ$のメンバーの詳細どこ法を適用されます変換された配列をwhereInを使用してクエリから渡すことはできません

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

である私がここを使用して、それを渡すために持っていた理由、それはです。 :このロジックでは、私が->whereIn('member_profiles.id', $memberfilters->pluck('id'))を使用する場合、私はこのエラーにComputeAge.phpライン13で

ErrorExceptionを取得し、私のブレードビュー


@Alexey Mezenin に何もありません '0' を取得します非オブジェクト

のプロパティを取得しようとするとこれは私の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

uh ..よく '$ memberfilters'を' var_dump'(あるいはもっと良い 'dd')しようとしています...その変数はIDを含んでいるだけではありません。 –

+0

こんにちは@BagusTesaどうすればいいですかもうコントローラーで?どこにddを追加しますか –

+0

こんにちは@RodneyZanoria、遅く答えて申し訳ありません、それは@AlexeyMezeninがすでに正しい方向にあなたを指し示したようです。実際には、 '' MemberProfile''を '' get() ''した後の問い合わせ結果を確認したいと思います。 –

答えて

1

アレクセイが答えのようにあなたが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; 
    } 
} 

誕生日フィールドがカーボンのインスタンスでない場合は、これを行います。あなたは将来の誕生日の値に対して負の値を必要としないならば、あなただけのdiffInYears()を呼び出すことができます

$age = Carbon::parse($user->birthday)->diffInYears(Carbon::now(), false); 

0

例えば使用pluck()、:

->whereIn('member_profiles.id', $memberfilters->pluck('id')) // Or member_profiles.id instead of id 
+0

これはうまくいきましたが、コントローラの行をコメントアウトする必要がありました。このエラーは、 "ComputeAge.php行13のErrorException:非オブジェクトのプロパティを取得しようとしています"というエラーです。 ComputeAge.phpは年齢を得るための私のファイルの一つです。上記の内容を更新しました。ファイルが正しく取得されているかどうか確認してください。 –

+0

@RodneyZanoriaここでエラーが「MemberProfile :: find($ id)」の場合、DBにID = $ idのプロファイルがないことを意味します。 –

+0

ComputeAge.phpファイルでエラーが検出されました。これは、オブジェクトではないと言っているためです。私はそれを回避する方法を知っていますか?私はComputeAge.phpを –

関連する問題