Laravel/Ardent: SQLSTATE[HY093]: Invalid parameter number: mixed named and positional parameters

StackOverflow https://stackoverflow.com/questions/21642463

  •  08-10-2022
  •  | 
  •  

Domanda

I'm trying to validate a User using Ardent's validate() method, but I always receive the HY093 error with the following extra information

(SQL: select count(*) as aggregate from:userswhereemail= my.email@gmail.com)

I used Sentry2 for my 'users' table database migration.

I have my User model set up like this:

/**
* Validation Rules for ARDENT here
*/    
public static $rules = [
    'first_name'            => 'required',
    'last_name'             => 'required',
    'email'                 => 'required|email|unique::users',
    'password'              => 'required|between:8,32|confirmed',
    'password_confirmation' => 'required|between:8,32',
];

/**
 * The attributes that can be added to a new User using $user->fill()
 *
 * @var array
 */
protected $fillable = [
    'first_name', 
    'last_name', 
    'email', 
    'password', 
    'password_confirmation'
];

/**
 * Automatically removes _confirmation attributes
 *
 * @var boolean
 */
public $autoPurgeRedundantAttributes = true;

From a form, I have POST data that includes ['email', 'first_name', 'last_name', 'password', 'password_confirmation] with their respective values that go to the following function in my UserController:

public function signup() {
    // Create a new User object
    $user = new User();

    // Populate attributes with information described in User->fillable
    $user->fill( Input::all() );

    // Check if info is valid using Ardent's validate() method
    if ( $user->validate() ) {
    ....
    ....
    ....

My code always fails on the if ( $user->validate() ) line. Can anyone help me shed some light upon this situation?

È stato utile?

Soluzione

The issue was this line

'email' => 'required|email|unique::users'

Should have been

'email' => 'required|email|unique:users'

According to The Laravel Docs

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top