Laravel 雄辩的模型,非日期字段上的非法偏移类型错误

Laravel 雄辩的模型,非日期字段上的非法偏移类型错误,laravel,attributes,eloquent,Laravel,Attributes,Eloquent,当我尝试创建UserFailedLogin对象时,我得到一个非法的偏移类型错误。当我仔细观察时,它似乎试图将ip地址列强制转换为日期。该列不是DB中的日期,也不是模型的$date中的日期 这是我的模型: class UserFailedLogin extends Model { public $timestamps = false; protected $table = 'user_failed_login'; protected $fillable = ['ip','email']; pro

当我尝试创建UserFailedLogin对象时,我得到一个非法的偏移类型错误。当我仔细观察时,它似乎试图将ip地址列强制转换为日期。该列不是DB中的日期,也不是模型的$date中的日期

这是我的模型:

class UserFailedLogin extends Model {

public $timestamps = false;
protected $table = 'user_failed_login';
protected $fillable = ['ip','email'];
protected $primaryKey = ['invalid_login_id'];
以下是我的create语句:

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

Model.php第2759行中的ErrorException:

非法偏移类型

  • 在Model.php lne 2759中
  • 在HandleExceptions->handleError('2','非法偏移类型','…/vendor/laravel/framework/src/illumb/Database/elount/Model.php',中, Model.php第2759行中的“2759”,数组()
  • 在Model.php第2743行的Model->getCasts()处
  • 在Model.php第2774行的Model->hasCast('ip',array('date','datetime'))中
  • 在Model.php第2863行中的Model->isDateCastable('ip')

  • ->ip()
    不是一个函数,它是一个成员访问器,它应该是
    ->ip
    ->get('ip')
    。也就是说,除非您创建了一个自定义的
    请求
    类来实现
    IP
    函数,尽管我看不出堆栈跟踪是这样的。

    ->IP()
    不是一个函数,它是一个成员访问器,它应该是
    ->IP
    ->get('IP')
    。也就是说,除非您创建了一个自定义的
    Request
    类,该类实现了
    IP
    函数,尽管我不认为在给定堆栈跟踪的情况下是这样的。

    我认为问题在于您的主键是一个数组,而不仅仅是一个字符串

    尝试将其更改为:
    protected$primaryKey='invalid_login_id'


    getCasts查找的是字符串,而不是数组或对象。

    我认为问题在于主键是数组而不仅仅是字符串

    尝试将其更改为:
    protected$primaryKey='invalid_login_id'


    getCasts查找的是字符串,而不是数组或对象。

    出现此问题的原因是,雄辩者认为您的主键是复合主键,因为您将其添加到了数组中,在您的情况下,只需将主键设置为字符串,在您应该使用的真正复合主键中。我希望这对您有所帮助。

    出现此问题的原因是Elount认为您的主键是复合主键,因为您将其添加到了数组中,在您的情况下,只需将主键设置为字符串,在您应该使用的真正复合主键中。我希望这对您有所帮助。

    感谢您抽出时间查看我的问题。->ip()确实返回我的ip地址,但不管怎样,这都不是问题所在。当我硬编码值而不是调用任何ip函数时,仍然会出现错误。(事实上,在这两种情况下,我的ip都显示在堆栈轨迹中。)感谢您抽出时间查看我的问题。->ip()确实返回我的ip地址,但不管怎样,这都不是问题所在。当我硬编码值而不是调用任何ip函数时,仍然会出现错误。(事实上,在这两种情况下,我的ip都显示在堆栈轨迹中。)