Laravel 5.4 - 检查来自另一个 table 的数据

Laravel 5.4 - Checking data from another table

对 laravel 5.4 仍然很困惑,因为我是新手,我试图从 Record table 中获取数据行课程用户相同。

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

成功运行,能够获取到人员名单。现在,我接下来要做的是检查这些人员列表(来自 $check1 的结果)是否存在于另一个名为 Fbuser[=29] 的 table 上=].试过这样做,

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

但是它给了我一个错误

(1/1) Exception Property [firstname] does not exist on this collection instance.

有什么办法可以解决这个问题吗? 提前致谢。

当您使用 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';
}

希望对您有所帮助。

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