首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在$data 3中记录所有保存的$data($data)?

如何在$data 3中记录所有保存的$data($data)?
EN

Stack Overflow用户
提问于 2016-08-15 18:02:07
回答 1查看 513关注 0票数 0

如何使用$data 3.3存储所有$data of all save($data)?

我过去在AppModel::beforeSave($data) (Cake1.2)中实现了一个小的日志代码(将$data转换为json并将其存储在VARCHAR、用户名和日期时间上)。

更新:

我试过使用EventListenerInterface:

代码语言:javascript
运行
复制
namespace App\Model\Event;
use Cake\Event\EventListenerInterface;
use Cake\ORM\TableRegistry;


class LogModel implements EventListenerInterface
{

    public function implementedEvents()
    {
        return [
            'Model.beforeSave' => 'logSave'
        ];
    }

    public function logSave($event, $data = null, $options = null)
    {

        $eventTable = TableRegistry::get('Event');
        $eventEntity = $eventTable->newEntity();

        $eventEntity->event = json_encode($event);
        $eventEntity->data = json_encode($data);
        $eventEntity->className = get_class($event->__get('subject'));

        //var_dump($eventEntity->className);exit();

        $eventTable->save($eventEntity);
    }
}

bootstrap.php:

代码语言:javascript
运行
复制
//event global
use Cake\Event\EventManager;
use App\Model\Event\LogModel;
$logModel = new LogModel();
EventManager::instance()->on($logModel);

但这导致无限递归调用,因为我需要保存(日志)所有保存的数据。有什么办法可以避免吗?

EN

回答 1

Stack Overflow用户

发布于 2016-08-16 05:05:10

CakePHP 3没有超级模型类的概念。适当的做法是让它成为一种行为,并在需要时使用它。

请参阅本节:创建行为

代码语言:javascript
运行
复制
namespace App\Model\Behavior;

use Cake\Datasource\EntityInterface;
use Cake\Event\Event;
use Cake\ORM\Behavior;
use Cake\ORM\Entity;
use Cake\ORM\Query;
use Cake\Utility\Inflector;

class JsonifyBehavior extends Behavior
{
  public function jsonify(Entity $entity)
  {
      /* Your logic */
  }

  public function beforeSave(Event $event, EntityInterface $entity)
  {
      $this->jsonify($entity);  
  }
}

在各自的表中,调用初始化方法中的行为:

代码语言:javascript
运行
复制
public function initialize(array $config)
{
    $this->addBehavior('Jsonify');
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38960419

复制
相关文章

相似问题

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