数据库ID与Laravel API不同

时间:2019-01-23 00:50:57

标签: laravel eloquent

数据库中的记录与我通过laravel API获得的记录不同。

我想获取具有唯一字符串ID的元素。但是我有一个问题。 我能够记录元素,但是当我获取它们时,我得到了另一个id值。

例如,对于ID为“ 5c47b3c858e2a”的产品,我得到的ID的值为5。我尝试使用雄辩的方法直接查询该值。结果也一样。

迁移

public function up()
{
    Schema::create('warehouses', function (Blueprint $table) {
        $table->string('id')->unique();
        $table->string('name');
        $table->integer('branch_id');
        $table->timestamps();
    });
}

public function getWarehousesOfBranch(Branch $branch) {
    return $branch->warehouses;
}

public function warehouses()
{
    return $this->hasMany('App\Warehouse');
}

public function up()
{
    Schema::create('branches', function (Blueprint $table) {
        $table->increments('id');
        $table->string('name')->unique();
        $table->timestamps();
    });
}

getWarehousesOfBranch是api方法,一个简单的GET。

我希望从数据库中获得相同的记录值。

2 个答案:

答案 0 :(得分:0)

在Warehouse模型中将$ incrementing设置为false,解决了该问题。

public $incrementing = false;

答案 1 :(得分:0)

默认情况下,Laravel假定键是自动递增的整数。因此,当您尝试访问密钥时,它将自动将密钥转换为整数。

要解决此问题,您应该更新模型上的$incrementing$keyType字段:

protected $keyType = 'string';

public $incrementing = false;

大多数情况下,这两个值是相互结合使用的,但是在某些地方,它们是独立使用的,因此最好适当地设置这两个值。