数据库中的记录与我通过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。
我希望从数据库中获得相同的记录值。
答案 0 :(得分:0)
在Warehouse模型中将$ incrementing设置为false,解决了该问题。
public $incrementing = false;
答案 1 :(得分:0)
默认情况下,Laravel假定键是自动递增的整数。因此,当您尝试访问密钥时,它将自动将密钥转换为整数。
要解决此问题,您应该更新模型上的$incrementing
和$keyType
字段:
protected $keyType = 'string';
public $incrementing = false;
大多数情况下,这两个值是相互结合使用的,但是在某些地方,它们是独立使用的,因此最好适当地设置这两个值。