2016-09-09 1 views
0

Когда я пытаюсь создать объект UserFailedLogin, я получаю ошибку недопустимого типа смещения. Когда я смотрю поближе, похоже, он пытается перевести столбец ip address в дату. Столбец не является датой в БД и не является в дате $ модели.Eloquent Model, ошибка недопустимого типа смещения в неточном поле

Вот моя модель:

class UserFailedLogin extends Model { 

public $timestamps = false; 
protected $table = 'user_failed_login'; 
protected $fillable = ['ip','email']; 
protected $primaryKey = ['invalid_login_id']; 

Вот мое создать заявление:

UserFailedLogin::create(['ip' => $request->ip(), 'email'=>$email,]); 

Моя ошибка:

ErrorException in Model.php line 2759:

Illegal offset type

  1. in Model.php lne 2759
  2. at HandleExceptions->handleError('2', 'Illegal offset type', '.../vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php', '2759', array()) in Model.php line 2759
  3. at Model->getCasts() in Model.php line 2743
  4. at Model->hasCast('ip', array('date', 'datetime')) in Model.php line 2774
  5. at Model->isDateCastable('ip') in Model.php line 2863

ответ

1

->ip() не является функцией, является ее членом аксессор , это должно быть ->ip или ->get('ip'). То есть, если вы не создали пользовательский класс Request, который реализует функцию IP, хотя я не вижу, чтобы это было так, как указано в вашей трассировке стека.

+0

Благодарим вас за то, что нашли время для рассмотрения моей проблемы. -> ip() возвращает мой ip-адрес, но независимо от того, что это не проблема. Я все еще получаю ошибку, когда я жестко запрограммирован в значении, вместо того, чтобы делать вызов для любых ip-функций. (Фактически в обоих случаях мой ip отображается в дорожке стека.) –

2

Я думаю, проблема заключается в том, что ваш первичный ключ является массивом, а не просто строкой.

Попробуйте изменить это, чтобы быть: protected $primaryKey = 'invalid_login_id';

В getCasts ищет строку, а не массив или объект.

Смежные вопросы