Lisa
Lisa

Reputation: 2139

MySQL Unknown Column '0'

I'm getting the most bizzare "Unknown Column '0'" error as I try and implement a Laravel model.

SQLSTATE[42S22]: Column not found: 1054 Unknown column '0' in 'where clause' (SQL: select * from `users` where `username` = smithjd and `0` = 1 limit 1)

All the other data in my application is API driven, but I thought it might be easier to have user authentication and management done through the built in ORM.

I've got MySQL set up with a users table:

+----------------+--------------+------+-----+---------+----------------+
| Field          | Type         | Null | Key | Default | Extra          |
+----------------+--------------+------+-----+---------+----------------+
| id             | int(11)      | NO   | PRI | NULL    | auto_increment |
| remember_token | varchar(100) | YES  |     | NULL    |                |
| username       | varchar(100) | YES  |     | NULL    |                |
| password       | varchar(100) | YES  |     | NULL    |                |
| first_name     | varchar(100) | YES  |     | NULL    |                |
| last_name      | varchar(100) | YES  |     | NULL    |                |
| email          | varchar(100) | YES  |     | NULL    |                |
+----------------+--------------+------+-----+---------+----------------+

And here is the model - It hasn't really been changed from the default:

use Illuminate\Auth\UserInterface; use Illuminate\Auth\Reminders\RemindableInterface;

class User extends Eloquent implements UserInterface, RemindableInterface {

    protected $fillable = array('email', 'username', 'password', 'first_name', 'last_name');

    /**
     * The database table used by the model.
     *
     * @var string
     */
    protected $table = 'users';

    /**
     * The attributes excluded from the model's JSON form.
     *
     * @var array
     */
    protected $hidden = array('password');

    /**
     * Get the unique identifier for the user.
     *
     * @return mixed
     */
    public function getAuthIdentifier()
    {
        return $this->getKey();
    }

    /**
     * Get the password for the user.
     *
     * @return string
     */
    public function getAuthPassword()
    {
        return $this->password;
    }

    /**
     * Get the token value for the "remember me" session.
     *
     * @return string
     */
    public function getRememberToken()
    {
        return $this->remember_token;
    }

    /**
     * Set the token value for the "remember me" session.
     *
     * @param  string  $value
     * @return void
     */
    public function setRememberToken($value)
    {
        $this->remember_token = $value;
    }

    /**
     * Get the column name for the "remember me" token.
     *
     * @return string
     */
    public function getRememberTokenName()
    {
        return 'remember_token';
    }

    /**
     * Get the e-mail address where password reminders are sent.
     *
     * @return string
     */
    public function getReminderEmail()
    {
        return $this->email;
    }

}

And here is how I'm trying to use it

$user_data = Input::all();
Auth::attempt(array('username' => $user_data['username'], 'password' => $user_data['password']));

I've never tried to implement a built in model in Laravel before, and I could use some assistance with this. Can anyone point me in the right direction?

Upvotes: 1

Views: 2108

Answers (1)

Marios Fakiolas
Marios Fakiolas

Reputation: 1545

Why don't you var_dump the Input::only('username', 'password'); so you can check that Laravel has really access to your credentials. There is an issue with the password Laravel tries to get from your form. Use sth like this to test and step forward:

$credentials = Input::only('username', 'password');

return var_dump($credentials);

if(Auth::attempt($credentials))
{
    return Redirect::intended('/someurl');
}

return Redirect::back()->withInput();

Upvotes: 2

Related Questions