2017-09-02 25 views
0

かなり混乱して、別のテーブルからデータをチェックし、私はともちろん同じ年を得た録音テーブルからデータの行を取得しようとしていますユーザーです。Laravel 5.4は - 私はそれに新しいですとlaravel 5.4にまだ

$show = Profile::where('userid','=',$id)->first(); 
$check1 = Record::where([['year','=',$show->year],['course','=',$show->course]])->get(); 

正常に実行され、人々のリストを取得できました。次に、私が次にやりたいのは、人のリスト($ check1の結果)がという別のテーブルに存在するかどうかを確認することです。Fbuser

$check2 = Fbuser::where([['first_name','=',$check1->firstname],['last_name','=',$check1->lastname]]); 
    if ($check2 === null) { 
     return 'recommend'; 
    } else { 
     return 'exit'; 
    } 

、これを実行しようとしたが、それは私にエラー

(1/1)例外 プロパティ[ファーストネーム]を与えたことは、このコレクションのインスタンスに存在しません。

私はこれについて回り道がありますか? ありがとうございます。

+0

テーブルFbuserのフィールド名は何ですか? –

答えて

0

check1には、1つではなく、Recordというレコードのコレクションが含まれています。単一のRecordを取得するには、foreachを使用します。これを試してみてください:

foreach($check1 as $record){ 
    $check2 = Fbuser::where([['first_name','=',$record->firstname],['last_name','=',$record->lastname]]); 
    if ($check2 === null) { 
     return 'recommend'; 
    } else { 
     return 'exit'; 
    } 
} 

また$check2の結果を取得する必要があります。 where()はクエリビルダオブジェクトを返します。このクエリの結果を得るには、末尾にget()またはfirst()を使用する必要があります。

$check2 = Fbuser::where([['first_name','=',$check1->firstname],['last_name','=',$check1->lastname]])->get() 
+0

ああ。それについて考えなかった。ありがとうございます。私は正しい結果を得ているかどうかはわかりませんが、正しいリストがあるかどうかをチェックするために人々のリストを得る方法はありますか? – user1540

+0

ああ私はdd()を試してきましたが、私に2つの結果を与えてくれると思っています。私の質問で間違っていると思っていますが、ありがとうございます。 – user1540

+0

@ user1540あなたは 'check2'のためにあなたの質問を修正するべきです。私は自分の答えを更新しました。 –

0

get()を使用している場合は、コレクションを取得します。それは、インデックスだことであなただけの

{{ $collection[0]->name }} 

のように、オブジェクトの1つを得ることができ、これを変更します。

$show = Profile::where('userid','=',$id)->first(); 
$check1 = Record::where([['year','=',$show->year],['course','=',$show->course]])->get(); 

$check2 = Fbuser::where([['first_name','=',$check1[0]->firstname], ['last_name','=',$check1[0]->lastname]]); 
if ($check2 === null) { 
    return 'recommend'; 
} else { 
    return 'exit'; 
} 

はそれがお役に立てば幸いです。

関連する問題