2016-09-09 14 views
0

UserFailedLoginオブジェクトを作成しようとすると、不正なオフセットタイプのエラーが発生します。もっと見ると、IPアドレスの列を日付にキャストしようとしているようです。列はDB内の日付でも、モデルの$日付にもありません。ここでEloquentモデル、非日付フィールドの不正なオフセットタイプエラー

は私のモデルである:ここでは

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')である必要があります。つまり、IP関数を実装するカスタムのRequestクラスを作成していない限り、私はあなたのスタックトレースが与えられていることはわかりませんが。

+0

問題を確認していただきありがとうございます。 - > ip()は私のIPアドレスを返しますが、それは問題ではありません。私はまだip関数を呼び出すのではなく、値をハードコードしたときにエラーが発生します。 (実際両方の場合、私のipはスタックトラックに表示されます。) –

2

私の問題は、プライマリキーが単なる文字列ではなく配列だと思います。

することを変更してみてください: protected $primaryKey = 'invalid_login_id';

getCastsはなく文字列の配列やオブジェクトを探しています。

関連する問題