Я столкнулся с необычной ошибкой при использовании функции save () Laravel.Это ошибка:
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
}
});
2-е РЕДАКТИРОВАНИЕ УДАЛЕНИЕ транзакции обернуть: $ 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
}
EDIT: Невозможно использовать функцию save () в модели без первичного ключа.