在使用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()函数。
发布于 2018-10-19 08:48:18
查看PostgreSQL的文档,我认为它在第一行就失败了,您正在尝试获取第一个元素,因为您没有设置要查看的任何标准。
你试过:
LedgerSheet::all()->first();https://stackoverflow.com/questions/52887960
复制相似问题