Laravel 5.4 - 检查另一个表中的数据

时间:2017-09-02 15:25:08

标签: mysql laravel laravel-5.4

对于laravel 5.4仍然非常困惑,因为我是新手,我试图从记录表获得相同的和< em>当然与用户

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

它成功运行并且能够获得人员列表。现在,我接下来要做的是检查另一个名为 Fbuser 的表中是否存在这些人员列表(来自 $ check1 的结果)。试过这样做,

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

但它给了我一个错误

  

(1/1)例外   此集合实例上不存在属性[firstname]。

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

2 个答案:

答案 0 :(得分: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';
}

希望它有所帮助。

答案 1 :(得分: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()