【问题标题】:Object of class Illuminate\Support\Collection could not be converted to int类 Illuminate\Support\Collection 的对象无法转换为 int
【发布时间】:2022-04-14 13:04:47
【问题描述】:

我在控制器中有条件检查数据库中的值,并根据该值将用户重定向到不同的登录页面

public function getLogin() 
{               
    $login = DB::table('login')->pluck('login');
    //var_dump($login);
    if ($login == 1) {
        return View::make('users.login');
    } else { 
        return View::make('users.login1');  
    }        
}

当我进入登录页面时出现此错误

Illuminate\Support\Collection 类的对象无法转换为 int

当我var_dump($login); 我得到

object(Illuminate\Support\Collection)#304 (1) { ["items":protected]=> array(1) { [0]=> int(1) } }

我该如何解决这个错误?

【问题讨论】:

  • 您要检查集合中的所有值是否为 1,还是要检查集合中是否至少有 1 个项目?

标签: laravel


【解决方案1】:

你可以这样使用它:

public function getLogin() 
{               
    $login = DB::table('login')->pluck('login');
    //var_dump($login);
    if ($login->count() == 1) {
        return View::make('users.login');
    } else { 
        return View::make('users.login1');  
    }        
}

【讨论】:

  • 感谢您的回答。
  • @Peter 你为你写了这个作品,然后删除了评论。这对你不起作用,彼得,因为如果集合有 2、3、4... 项,$login->count() == 1 将返回 false
  • 这个答案的一个问题是它计算集合中的项目数,OP 是否真的要检查字段中的值而不是计数?
  • Ithink @Peter 想计算login 表中的记录数,如果只有一个,他将返回 'users.login' 视图,如果不止一个,他将返回 ' users.login1' !!我说得对吗@Peter?
  • 不会有问题@Peter,正如我之前所说,$login->count() 将返回login 表中的记录数,因此它适用于所有情况23 ....
【解决方案2】:

$login 是一个集合,您可以通过查询获得表登录的所有值。如果你想要这个创建一个 for 循环并在里面有你的 if 语句。

例如:

foreach ($login as $val) {
    if ($val== 1) {
         return View::make('users.login');
    } else { 
        return View::make('users.login1');  
    }    
}

【讨论】:

  • 感谢您的回答。
【解决方案3】:

您应该在这里使用isEmpty()count(),例如:

if (!$login->isEmpty())
if (count($login) > 0)
if ($login->count() > 0)

【讨论】:

  • isEmpty()empty() 将不起作用,因为它们永远不会为空。 count() 工作得很好,就像在 @maraboc 回答中一样
  • @Peter 我刚刚测试了isEmpty(),它按预期工作。 empty() 在这里不起作用。
  • 但我有不同的值 0,1,2,3。在这种情况下,如果值为 2 并且我检查 if (!$login->isEmpty()) 我怎么知道那是 2 并会重定向用户?
  • @Peter 所以,你真的想检查 $login 集合是否有值 1?在这种情况下,你应该这样做$login = DB::table('login')->find(1); if (!is_null($login))
  • 我还需要->pluck('login') 列。抱歉,我是新手,还不太了解。
【解决方案4】:

好的,在这种情况下很简单,您可以使用 [0] 和 login 以 int 访问它。

 public function getLogin() 
{               
    $login = DB::table('login')->pluck('login');
    //var_dump($login);
    if ($login[0] == 1) {
        return View::make('users.login');
    } else { 
        return View::make('users.login1');  
    }        
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-28
    • 2015-09-23
    • 2019-06-27
    • 2019-01-10
    相关资源
    最近更新 更多