首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在没有主键的模型上使用save()函数会产生错误

在没有主键的模型上使用save()函数会产生错误
EN

Stack Overflow用户
提问于 2018-10-19 07:49:03
回答 1查看 185关注 0票数 0

在使用Laravel的save()函数时,遇到了一个不寻常的错误。这是一个错误:

代码语言:javascript
复制
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)

有人知道是什么原因造成的吗?有什么可以解决的呢?这是我的模型:

代码语言:javascript
复制
<?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行数据。

代码语言:javascript
复制
$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();

代码语言:javascript
复制
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()函数。

EN

回答 1

Stack Overflow用户

发布于 2018-10-19 08:48:18

查看PostgreSQL的文档,我认为它在第一行就失败了,您正在尝试获取第一个元素,因为您没有设置要查看的任何标准。

你试过:

代码语言:javascript
复制
LedgerSheet::all()->first();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52887960

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档