0

我在我的应用程序中使用 mysql 5.7、laravel5.2 和 php 5.6.17..

我创建了一个迁移表

   public function up()
    {
        Schema::create('admin_login_history', function (Blueprint $table) {
            $table->increments('id');
            $table->string('url');
            $table->json('client_details');
            $table->integer('user_id')->nullable();
            $table->timestamps();
        });
    }

我为它创建了一个模型..

class AdminLoginHistory extends Model
{

    protected $table = 'admin_login_history';

    protected $fillable = ['file_path', 'url', 'user_id', 'client_details'];

    protected $casts = ['client_details' => 'json'];
}

我正在插入一个 client_details 的数据数组,该数组在我的模型中转换为 json。

现在从表中检索数据时出现错误

$loginhistory = AdminLoginHistory::where('user_id', $id)->orderBy('created_at', 'desc')->take(3)->get();

错误:

File Path: /home/storage/elivio/InvizoAdmin/vendor/laravel/framework/src/Illuminate/Database/Connection.php
Error Code:HY000,  Line Number:669
Message:SQLSTATE[HY000]: General error: 2036 (SQL: select * from `admin_login_history` where `user_id` = 1 order by `created_at` desc limit 3)
4

2 回答 2

0

这可能与这篇文章类似。JSON 数据在 MySQL 中仍然是相对较新的数据,所以我想在事情变得坚如磐​​石之前需要一段时间。

于 2016-03-22T16:04:06.063 回答
0

“从 MySQL 5.7.8 开始,MySQL 支持原生 JSON 数据类型......”所以请检查您是否拥有正确的 mysql 版本(5.7.8 或更高版本)。

Mysql 5.7.8 JSON 数据类型,文档

于 2016-06-20T15:24:46.430 回答