使用Laravel的save()函数时遇到一个异常错误。这是错误:
SQLSTATE[42601]: Syntax error: 7 ERROR: zero-length delimited identifier at or near """"
LINE 1: ...pdate "t_h_ledger_sheet" set "o_memo1" = $1 where "" is null
^ (SQL: update "t_h_ledger_sheet" set "o_memo1" = 1234 where "" is null)
有人可以知道是什么原因造成的,可以采取什么措施解决此问题?这是我的模特:
<?php
namespace App\Model;
use Illuminate\Database\Eloquent\Model;
class LedgerSheet extends Model
{
protected $table = 't_h_ledger_sheet';
protected $primaryKey = null;
public $incrementing = false;
public $timestamps = false;
}
没有主键会导致错误吗?
编辑:这是我所做的。还有一个附加的细节,该表只能包含1行数据
$memos = LedgerSheet::first();
if ($memos == null) {
$memos = new LedgerSheet;
}
$o_memo1 = "ASDF";
$o_memo2 = "ASDF";
$o_memo3 = "ASDF";
$o_memo4 = "ASDF";
$o_memo5 = "asdf";
$o_memo6 = "asdf";
$o_memo7 = "asdf";
$o_memo8 = "asdf";
DB::transaction(function() use($memos, $o_memo1, $o_memo2, $o_memo3, $o_memo4, $o_memo5, $o_memo6, $o_memo7, $o_memo8) {
$memos->o_memo1 = $o_memo1;
$memos->o_memo2 = $o_memo2;
$memos->o_memo3 = $o_memo3;
$memos->o_memo4 = $o_memo4;
$memos->o_memo5 = $o_memo5;
$memos->o_memo6 = $o_memo6;
$memos->o_memo7 = $o_memo7;
$memos->o_memo8 = $o_memo8;
try{
$memos->save();
}catch(\Exception $e){
error_log($e->getMessage()); // insert query
}
});
第二次编辑删除交易包装: $ memos = LedgerSheet :: first();
if ($memos == null) {
$memos = new LedgerSheet;
}
$memos->o_memo1 = "ASDF";
$memos->o_memo2 = "ASDF";
$memos->o_memo3 = "ASDF";
$memos->o_memo4 = "ASDF";
$memos->o_memo5 = "asdf";
$memos->o_memo6 = "asdf";
$memos->o_memo7 = "asdf";
$memos->o_memo8 = "asdf";
try{
$memos->save();
}catch(\Exception $e){
error_log($e->getMessage()); // insert query
}
编辑:没有主键就无法在模型上使用save()函数。
答案 0 :(得分:0)
查看PostgreSQL的文档,我相信对您来说它在第一行会失败,因为您没有设置要查看的标准,所以您尝试获取第一个元素。
您尝试过吗:
LedgerSheet::all()->first();