сохранение данных из Shell с cakephp 3

1

Что мне не хватает, чтобы сохранить данные в БД из CakePHP Shell? Может ли CakePHP 3 Shell сохранять данные в БД? Я не вижу никакой документации об этом.

<?php
Namespace App\Shell;

use Cake\Console\Shell;
use Cake\Core\Configure;

// DON'T IF I NEED IT
use Cake\ORM\TableRegistry;
use Cake\ORM\Entity;
use Cake\Datasource\EntityInterface;

class CacheDnsResolverShell extends Shell
{
    public function initialize()
    {
        parent::initialize();
        $this->loadModel('ResolvedHosts');
    }

    public function AddResolvedHost($fqdn, $ip)
    {
        $data = array(
            'fqdn' => $fqdn,
            'ip' => $ip,
            'timestamp' => time()
            );

        // I TRIED THIS, IT DOES NOT WORK
        //$this->ResolvedHosts->save($data);

        // I TRIED ALSO THIS, IT DOES NOT WORK TOO
        $resolvedhost = $this->ResolvedHosts->patchEntity('resolvedhost', $data);

        if ($this->ResolvedHosts->save($resolvedhost)) {
                echo  "$fqdn ($ip) has been added successfully";
        }
    }
}

При запуске:

./bin/cake cache_dns_resolver AddResolvedHost toto 1.1.1.1

Я получаю для первой попытки:

Ошибка предупреждения: аргумент 1, переданный в Cake\ORM\Table :: save(), должен быть экземпляром Cake\Datasource\EntityInterface, заданным массивом, вызываемым в

и вторая попытка

Ошибка предупреждения: аргумент 1 передан в Cake\ORM\Table :: patchEntity() должен быть экземпляром Cake\Datasource\EntityInterface, предупреждающая ошибка: аргумент 1, переданный в Cake\ORM\Marshaller :: merge(), должен быть экземпляром торт \Datasource\EntityInterface

  • 0
    попробуйте добавить $resolvedhost = $this->ResolvedHosts->newEntity(); перед вашими комментариями php
Теги:
cakephp
cakephp-3.0

1 ответ

1

Предоставить объект ResolvedHosts:

   public function AddResolvedHost($fqdn, $ip)
    {

        $resolvedhost = $this->ResolvedHosts->newEntity();
        $data = array(
            'fqdn' => $fqdn,
            'ip' => $ip,
            'timestamp' => time()
            );

        // I TRIED THIS, IT DOES NOT WORK
        //$this->ResolvedHosts->save($data);

        // I TRIED ALSO THIS, IT DOES NOT WORK TOO
        $resolvedhost = $this->ResolvedHosts->patchEntity($resolvedhost, $data);

        if ($this->ResolvedHosts->save($resolvedhost)) {
                echo  "$fqdn ($ip) has been added successfully";
        }
    }

Ещё вопросы

Сообщество Overcoder
Наверх
Меню