【发布时间】:2018-12-31 23:06:02
【问题描述】:
我正在使用 laravel+Nova,连接到现有软件的现有数据库。主键不是默认的“ID”,所以在“模型”处我将其更改为:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class products extends Model
{
//
protected $table = 't_items';
protected $primaryKey = 'item_num';
public $timestamps = false;
}
================================================ =============== 更改和更新 satabase (With nova) 时没有错误。 但是,当使用 save(对于新行或现有行)时,会出现错误:
SQLSTATE[42000]:[Microsoft][ODBC Driver 13 forSQL Server][SQL Server] Error converting data type nvarchar to numeric 9SQL select top 1 * drom [t_items][item_num] = null
"item_num" is defined as:
numeric
primary key
Allo nulls = false
Identity = false
Identity seed = 0
Identity increment = 0
Length = 9
Numeric precision = 10
Numeric scale = 0
我应该添加什么。我认为 laravel 在保存时没有定义 ID 并且服务器需要它
【问题讨论】:
-
嗨,大卫,我在错误消息中看到了
Error converting data type nvarchar to numeric。你能用$incrementing = falseon the model关闭主键的自动增量吗? -
我试过了。仍然出现此错误:SQLSTATE[42000]:[Microsoft][ODBC Driver 13 for SQL Server][SQL Server] 无法将值 NULL 插入列 'item_num'....
-
Cannot insert the value NULL into column 'item_num'.等大卫,你能发布一下你是如何插入数据的吗?在将$incrementing设置为false之后,您必须在保存新模型时手动分配主键.. -
nova 在创建新行时不询问 id。我没有罚款如何让它要求它。尽管我在 App/Nova/Produccts php 中添加了 required 字段,如下所示: public function fields(Request $request) { return [ ID::make('ID', 'item_num') ->creationRules('required') - >sortable(), Text::make('item_name') ]; }
-
我现在看到这个问题发生在其他人身上,但在 github 上没有得到回答或解决:github.com/laravel/nova-issues/issues/734
标签: laravel laravel-nova