Nextras\ORM – fetchAll() mi vrací jiné hodnoty, než jsou v databázi
- lookass
- Člen | 54
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č?
- dms
- Člen | 94
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.