2017-09-02 64 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包含的记录集合不是单一的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 }} 

修改此:

$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'; 
} 

希望它能帮助。