Nextras\ORM – fetchAll() mi vrací jiné hodnoty, než jsou v databázi

před 10 dny

lookass
Člen | 17
+
0
-

Ahoj, prosím o pomoc, asi přehlížím jen nějakou blbost, nicméně snažím se z databáze vytáhnout data přes Nextras\ORM, ale i když vymažu cache, vrací mi to divnosti :(

Mám takovouhle tabulku:
CREATE TABLE main_menu (
id int(11) NOT NULL AUTO_INCREMENT,
component_id int(11) NOT NULL,
parent_id int(11) NOT NULL DEFAULT 0,
name varchar(100) COLLATE utf8_czech_ci NOT NULL,
title varchar(100) COLLATE utf8_czech_ci DEFAULT NULL,
description text COLLATE utf8_czech_ci DEFAULT NULL,
enabled tinyint(1) NOT NULL DEFAULT 1,
rank int(11) NOT NULL DEFAULT 0,
user_role_id int(11) NOT NULL DEFAULT 0,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci;

INSERT INTO main_menu (id, component_id, parent_id, name, title, description, enabled, rank, user_role_id) VALUES
(2, 1, 0, ‘Úvodní stránka’, ‘INTRANET’, NULL, 1, 0, 0),
(3, 2, 0, ‘Aplikace’, ‘INTRANET | aplikace’, NULL, 1, 0, 1);

A MainMenuEntity.php

<?php
/**
 * Class MainMenuEntity
 * @property int            $id {primary}
 * @property int            $component_id
 * @property int            $parent_id
 * @property string         $name
 * @property string|null    $title
 * @property string|null    $description
 * @property bool           $enabled
 * @property int            $rank
 * @property int            $user_role_id
 */
class MainMenuEntity extends \Nextras\Orm\Entity\Entity
{
}
?>

A v komponentě toto:

<?php
public function getMenuItems(int $parentID=0): array
    {
        return $this->orm->mainMenu->findBy([
            ICollection::AND,
            'parent_id'         => $parentID,
            'enabled'           => true
        ])->fetchAll();
    }
?>

Což generuje sql:
SELECT main_menu.* FROM main_menu AS main_menu WHERE (main_menu.parent_id = 0) AND (main_menu.enabled = 1)

Kdzyž tento select udělám ručně v Admineru, výsledek je tento:

<?php
{
	"id": "2",
	"component_id": "1",
	"parent_id": "0",
	"name": "Úvodní stránka",
	"title": "INTRANET",
	"description": null,
	"enabled": "1",
	"rank": "0",
	"user_role_id": "0"
}
, {
	"id": "3",
	"component_id": "2",
	"parent_id": "0",
	"name": "Aplikace",
	"title": "INTRANET | aplikace",
	"description": null,
	"enabled": "1",
	"rank": "0",
	"user_role_id": "1"
}
?>

Nicméně Nextras\ORM mi vrací:

<?php
{"id":2,"component_id":null,"parent_id":null,"name":"Úvodní stránka","title":"INTRANET","description":null,"enabled":true,"rank":0,"user_role_id":null}
{"id":3,"component_id":null,"parent_id":null,"name":"Aplikace","title":"INTRANET | aplikace","description":null,"enabled":true,"rank":0,"user_role_id":null}

?>

component_id, parent_id, user_role_id mi to vrací jako null, nevíte někdo proč?

před 10 dny

dms
Člen | 27
+
+1
-

Je to v dokumentaci https://nextras.org/…/conventions property entity pojmenuj camelCase notaci (parentId apod). Parent id apod. by melo byt v db jako null a ne nula – s nulou ti nepujdou cizi klice.

před 9 dny

lookass
Člen | 17
+
0
-

Děkuji za rychlou a luxusní odpověď. Funguje to.