検索

ホームページ  >  に質問  >  本文

tp6、モデル内で継承された save メソッドを呼び出して新しいデータを追加するにはどうすればよいですか?

tp6、モデルに新しい変更メソッドを定義します。
tp51 では、self::save() を直接使用して新しい追加を示します。
ただし、tp6 では、self::save() を使用し、エラーを報告し、静的メソッドではありません
非静的メソッド think\Model::save() は静的に呼び出さないでください
$this を使用すると、エラーが報告されます
オブジェクト コンテキスト内でない場合の $this の使用
では、モデル内の親のメソッドを呼び出して追加してみてはどうでしょうか?

rreeee


朝游东海朝游东海2044日前2509

全員に返信(1)返信します

  • 朝游东海

    朝游东海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(): 引数 #1 は配列ではありません

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

    Print $this->field

    eq true

    ???

    右クリックしてすべて閉じて、

    正式リリース後に戻ってきてください

    返事
    0
  • キャンセル返事