如何获得数组laravel 4的值?

时间:2013-08-31 17:37:45

标签: php laravel laravel-4 eloquent

我只想问一下,如何使用laravel 4获取此代码的值?

$auth = DB::select(
    'SELECT auth FROM users WHERE username like ?'
    , array($username)
);

当我显示代码的结果时,它回显“Array”并且它总是将用户重定向到'anotherpage',我实际上是这样做的:

if (Auth::attempt($userdata))
{
    if ($auth==0)
    {
        return Redirect::to('home');
    }
    elseif ($auth==1)
    {
        return Redirect::to('dashboard');
    } 
    else 
    {
        return Redirect::to('anotherpage');
    }
}

请帮忙。先感谢您。

3 个答案:

答案 0 :(得分:2)

首先,为什么要通过Auth类和手动SELECT查询对用户进行两次身份验证? Auth::attempt就够了。 Read it here.

无论如何,假设您真的想这样做,您的代码无法正常工作,因为您在$auth语句中将if分配给0;所以这个:

if($auth = 0)   

基本上是这样的:

if(0) //Which is always false

所以,我将if语句改为:

if($auth == 0)  

您的最终代码

if(Auth::attempt($userdata)) 
{
  $auth = DB::table('users')->where('username', '=', $username)->first()->auth;//Don't use "LIKE" as it may cause huge security issues.
  if($auth == 0) {
        return Redirect::to('home');
  }
  else if($auth == 1) {
        return Redirect::to('dashboard');
  }
  else {
        return Redirect::to('anotherpage');
  }
}

答案 1 :(得分:1)

当您尝试回显数组时会发生这种情况。请改用print_r()。它打印数组(或变量)内容的可读输出:

$myArray = DB::select('SELECT auth FROM users WHERE username like ?', array($username));
print_r($myArray);

这样,您将看到数组的内容,然后您可以显示特定项目。

将其封装在<pre>标签中会使输出更具可读性:

echo '<pre>';
print_r($myArray);
echo '</pre>';

或者简单地说:

echo '<pre>', print_r($myArray), '</pre>';

答案 2 :(得分:1)

您使用的查询构建器错误。试试这个:

$auth = DB::table('users')->select('auth')->where('username', 'LIKE', $username)->get();
dd($auth);