Heim  >  Fragen und Antworten  >  Hauptteil

tp6, wie rufe ich die geerbte Speichermethode im Modell auf, um neue Daten hinzuzufügen?

tp6, definieren Sie eine neue Änderungsmethode im Modell.
Verwenden Sie in tp51 direkt self::save(), um neue Hinzufügungen anzuzeigen.
Aber in tp6 verwenden Sie self::save(), es wird ein Fehler gemeldet, es handelt sich nicht um eine statische Methode
Die nicht-statische Methode thinkModel::save() sollte nicht statisch aufgerufen werden.
Wenn Sie $this verwenden, wird ein Fehler gemeldet.
Wenn Sie $this verwenden, wenn es sich nicht im Objektkontext befindet.
Wie können Sie also die übergeordnete Methode im Modell aufrufen? hinzufügen?

<?php
namespace app\common\model;
use think\Model;
use think\exception\PDOException;
class Common extends Model
{

    //
    protected static function  init(): void
    {
    }

    /**
     * 添加修改
     **/
    public static function addEdit($data = []){
        $type = isset($data['id']) ? ($data['id']>0 ? 2 : 1) : 1; //?? ?:
        try {
            if($type == 2){ //更新
                $row = self::update($data);
            }else{
                $row = self::save($data);
                //$row = $this->save($data);
            }
            if($row !==false){
                return ['status'=>1,'msg'=>'操作成功', 'data' => '' ];
            }else{
                return ['status'=>0,'msg'=>'操作失败', 'data' => '' ];
            }
        } catch (PDOException $e) {
            return ['status'=>0,'msg'=>$e->getMessage()];
        }
    }


朝游东海朝游东海2028 Tage vor2492

Antworte allen(1)Ich werde antworten

  • 朝游东海

    朝游东海2019-04-24 11:07:32

    已解决,自己的问题

    <?php
    namespace app\common\model;
    use think\Model;
    use think\exception\PDOException;
    class Common extends Model
    {
    
        //
        protected static function  init(): void
        {
        }
        /**
         * 添加修改
         **/
        public function addEdit(array $data = []){ //去掉static静态声明
            $type = isset($data['id']) ? ($data['id']>0 ? 2 : 1) : 1; //?? ?:
            try {
                if($type == 2){ //更新
                    $row = self::update($data);
                }else{
                    $row = $this->save($data);
                }
                if($row !==false){
                    return ['status'=>1,'msg'=>'操作成功', 'data' => '' ];
                }else{
                    return ['status'=>0,'msg'=>'操作失败', 'data' => '' ];
                }
            } catch (PDOException $e) {
                return ['status'=>0,'msg'=>$e->getMessage()];
            }
        }

    能调用save()方法了,但是

    又出错了

    array_merge(): Argument #1 is not an array

           $field = array_merge($this->field, $append);

    打印 $this->field

    eq true

    ???

    右键,close all,

    等正式发布以后再来

    Antwort
    0
  • StornierenAntwort