【问题标题】:Laravel 5.4 Checking given array from dbLaravel 5.4 从 db 检查给定数组
【发布时间】:2017-09-04 16:15:58
【问题描述】:

我正在尝试学习 laravel 并进行了一些查询。在此查询中,我试图检查 Record 中的值是否与用户获得相同的 year 和 course。

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

因为它给了我一个数组的集合并且想要检查已经给出的每一个结果,所以我使用了一个 foreach。

foreach($check1 as $record){
    $check2 = Fbuser::where([['first_name','=',$record->firstname],['last_name','=',$record->lastname]])->get();
       if ($check2 === null) {
            dd($record->firstname);
       }else {
            //do something
       }}

在上面的代码中,我试图检查 $check1 的结果是否存在于 Fbuser 表中。现在,问题是它只会检查第一个值而不是其余的值。如何让每个结果都通过 $check2 查询?我认为每个人都会做到这一点。计划列出所有不在 Fbuser 表中的名称。尝试寻找解决方案,但似乎找不到。

【问题讨论】:

  • 我看到你没有在你的 foreach 中返回任何东西,foreach 背后的原因是什么?
  • @Sletheren 我试图检查 $check1 的每个结果。我在想每个都会有所帮助。
  • 检查下面的答案..你可以使用过滤器来做到这一点,过滤器会根据你想要的过滤结果
  • 你可以只使用 SQL 来做到这一点吗?

标签: php mysql laravel laravel-5.4


【解决方案1】:

您可以使用 Laravel 的过滤器,这将只返回具有相同名字和姓氏的用户的记录:

$filtered_result = $check1->filter(function ($value, $key) {
    return Fbuser::where([['first_name','=',$value->firstname],['last_name','=',$value->lastname]];
});

【讨论】:

  • 谢谢。我已经尝试过该解决方案,但似乎它只是将登录用户的详细信息返回给我。诡异的。可能在我查询的路上。
  • 它必须返回与 FBuser first_name 和 last_name 通常匹配的记录
  • 是的,但登录的用户甚至不在 FBuser 表上。感谢您的解决方案,我学到了一些新东西:)
猜你喜欢
  • 2018-01-24
  • 1970-01-01
  • 2017-11-04
  • 2018-08-25
  • 2017-11-05
  • 1970-01-01
  • 1970-01-01
  • 2017-06-14
  • 2019-01-01
相关资源
最近更新 更多