2017-02-10 59 views
0

在我的客户模型,我有以下两个功能,即处理是空字段,创建一个新的客户时,设置为空值:从Lavarel形式从模型

public function setCustPstAttribute($custpst) 
{ 
    $this->attributes['CustPST'] = trim($custpst) == '' ? 0 : trim($custpst); 
} 

    public function setCustSicAttribute($custsiccode){ 
    $this->attributes['CustSicCode'] = trim($custsiccode) == '' ? 0 : trim($custsiccode); 
} 

功能setCustPstAttribute($ custpst)工作正常,您可以看到上面的0值。 setCustSicAttribute($ custsiccode)函数根本不会被访问/输入,我尝试从函数中退出,并且它永远不会被访问。唯一的区别是变量类型,$ custpst是varchar,$ custsiccode是int。 SQL插入正在寻找一个整数,但得到一个空字符串。

QueryException {#363 ▼ 
    #sql: "insert into `customers` (`CustCompanyName`, `CustSicCode`, `FOBLocation`, `CustPST`, `CustGenerator`, `CustStatus`, `CustLastUpdate`, `CustStartDate`) values (?, ?, ?, ?, ?, ?, ?, ?)" 
    #bindings: array:8 [▼ 
    0 => "Test" 
    1 => "" 
    2 => "Selkirk" 
    3 => 0 
    4 => "" 
    5 => "Active" 
    6 => "2017-02-10 14:12:48" 
    7 => "2017-02-10 14:12:48" 
    ] 
    #message: "SQLSTATE[22007]: Invalid datetime format: 1366 Incorrect integer value: '' for column 'CustSicCode' at row 1 (SQL: insert into `customers` (`CustCompanyName`, `CustSicCode`, `FOBLocation`, `CustPST`, `CustGenerator`, `CustStatus`, `CustLastUpdate`, `CustStartDate`) values (fgfgf, , Selkirk, 0, , Active, 2017-02-10 14:12:48, 2017-02-10 14:12:48))" 
    #code: "22007" 
    #file: "/var/www/laravel/vendor/laravel/framework/src/Illuminate/Database/Connection.php" 
    #line: 770 
    -previous: PDOException {#364 ▶} 
    +errorInfo: array:3 [▼ 
    0 => "22007" 
    1 => 1366 
    2 => "Incorrect integer value: '' for column 'CustSicCode' at row 1" 
    ] 
    +"previous": PDOException {#364 ▶} 
    -trace: {▶} 
} 

谢谢,儒略

回答

0

功能(设定和属性之间)的名称必须是完全一样在数据库的列名称。设置CustSicCode属性。更新后它工作。谢谢