Что мне не хватает, чтобы сохранить данные в БД из 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
Предоставить объект 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";
}
}
$resolvedhost = $this->ResolvedHosts->newEntity();
перед вашими комментариями php