Používání ArrayHash::from – jak získat z databáze upravitelný array

vanak
Člen | 2
+
0
-

Ahoj, mám problém v SettingsManageru ve funkci getSettings, kterou potřebuji k získání nastavení pro vypsání detailu produktu. Používám Nette 3.

Chyba je v tomto kódu:

public function getSettings($date = null)
{
    if (is_null($date)) $date = Context::literal('NOW()');
    $settings = $this->database->table(self::TABLE_NAME)
        ->where(self::COLUMN_VALID_FROM . " <= DATE(?) AND " . self::COLUMN_VALID_TO . " >= DATE(?)", $date, $date)->fetch();
    if (!$settings) return false;
    $settingsArray = ArrayHash::from($settings);
    $settingsArray->offsetSet(
        self::ATTR_VAT_PAYER,
        isset($settings->ref(PersonManager::TABLE_DETAIL_NAME, self::COLUMN_ACCOUNTANT)[PersonManager::COLUMN_TAX_NUMBER])
    );
    return $settingsArray;
}

Konkrétně je chyba na řádku, kde se snažím pomocí ArrayHash::from udělat z activerow upravitelné pole (pokud to správně chápu).

Vypisovaná chyba je následující: Argument 1 passed to Nette\Utils\ArrayHash::from() must be of the type array, object given, called in C:\xampp\htdocs\eshop\app\EshopModule\model\SettingsManager.php on line 59

Budu moc rád za pomoc!

Ondřej Kubíček
Člen | 494
+
+1
-

tak chyba mluví jasně, ArrayHash::from() vyžaduje pole, ty tam předáváš object ActiveRow, a ten si budeš muset sám převést na pole

vanak
Člen | 2
+
0
-

Super, díky, stačilo na settings použít metodu toArray(). Nějak mi to nedocházelo, hledal jsem to asi 2 hodiny, než mi to došlo. :)