Nette\Database\Context fetchAll() vrací jen id řádku
- emil54
- Člen | 19
Zdravim vsechny,
nepotkal jste se někdo s problémem, kdy vám jednoduchý select vrací na
fetchAll() pouze id řádku z tabulky?
Dělá mi to na projektu updatnutém na Nette 3. Na Nette 2.2, 2.4, 2.5 bez
problému…
Chová se to fakt divně, někdy to vrátí komplet, ale většinou jen to id.
Nepomahá mazat cache.
Předem dík za postřehy, i kdyby z toho vyšlo, že jsem vocas ;)
$iterations = $this->database->table('task_iteration')->where('user_id = ?', 6)->order('name')->fetchAll();
PHP 7.4.13, mysql Ver 14.14 Distrib 5.7.32, for Linux
nette/database:2.4.10
nette/database:3.0.7
-- phpMyAdmin SQL Dump
-- version 4.6.6deb5ubuntu0.5
-- https://www.phpmyadmin.net/
--
-- Host: localhost:3306
-- Generation Time: Jan 08, 2021 at 04:23 PM
-- Server version: 5.7.32-0ubuntu0.18.04.1
-- PHP Version: 7.1.33-24+ubuntu18.04.1+deb.sury.org+1
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
--
-- Database: `crmnette3`
--
-- --------------------------------------------------------
--
-- Table structure for table `task_iteration`
--
CREATE TABLE `task_iteration` (
`id` int(11) UNSIGNED NOT NULL,
`name` varchar(128) DEFAULT NULL,
`description` text,
`status` tinyint(1) UNSIGNED NOT NULL DEFAULT '2',
`user_id` int(11) UNSIGNED NOT NULL,
`project_id` int(1) NOT NULL,
`start_date` datetime DEFAULT NULL,
`stop_date` datetime DEFAULT NULL,
`created_at` datetime DEFAULT NULL,
`created_by` int(11) NOT NULL,
`completed_at` datetime DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
--
-- Dumping data for table `task_iteration`
--
INSERT INTO `task_iteration` (`id`, `name`, `description`, `status`, `user_id`, `project_id`, `start_date`, `stop_date`, `created_at`, `created_by`, `completed_at`) VALUES
(1, 'KABH001001', 'Analyza a rozpocet projektu', 0, 6, 1, '2013-08-25 00:00:00', '2013-09-01 00:00:00', '2013-08-25 00:00:00', 0, NULL);
--
-- Indexes for dumped tables
--
--
-- Indexes for table `task_iteration`
--
ALTER TABLE `task_iteration`
ADD PRIMARY KEY (`id`);
--
-- AUTO_INCREMENT for dumped tables
--
--
-- AUTO_INCREMENT for table `task_iteration`
--
ALTER TABLE `task_iteration`
MODIFY `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=15;
Raději přidám i composer…
{
"name": "nette/web-project",
"description": "Nette: Standard Web Project",
"keywords": ["nette"],
"type": "project",
"license": ["MIT", "BSD-3-Clause", "GPL-2.0", "GPL-3.0"],
"require": {
"php": ">= 7.1",
"nette/application": "^3.0",
"nette/bootstrap": "^3.0",
"nette/caching": "^3.0",
"nette/database": "^3.0",
"nette/di": "^3.0",
"nette/finder": "^2.5",
"nette/forms": "^3.0",
"nette/http": "^3.0",
"nette/mail": "^3.0",
"nette/robot-loader": "^3.0",
"nette/security": "^3.0",
"nette/utils": "^3.0",
"latte/latte": "^2.5",
"tracy/tracy": "2.7.5",
"contributte/translation": "^0.4",
"texy/texy": "^3.1",
"ublaboo/datagrid": "6.4.0",
"tomaj/nette-bootstrap-form": "^2.0",
"nextras/form-components": "^1.0"
},
"require-dev": {
"nette/tester": "^2.0"
},
"autoload": {
"classmap": ["app/Bootstrap.php"]
},
"minimum-stability": "stable"
}
- Kamil Valenta
- Člen | 820
Ale Ty na žádný sloupec nesaháš. Zkus si:
foreach($iterations as $i) {
dump($i->name);
}
dump($iterations);
- Kamil Valenta
- Člen | 820
Popsáno zde: https://doc.nette.org/…ase/explorer
Ale není to žádná novinka, i předchozí verze se takto chovaly.
- emil54
- Člen | 19
No, v předchozich verzích, alespoň v těch, které mi tu prošly compem,
se to rozhodně tak nechovalo a nechová.
Mám ve vývojových verzich projektů v presenterech, modelech atd. stabilně
dumpnutej každej prd. Dost mi to pomahá při práci. Teď jsem to trochu
prolezl a všude, vážně všude to vrací komplet celý.
Jestli to je očekávaná fičura, tak asi moc nechápu její smysl. Nejspiš už jsem starej a je čas s tím seknout a začít sypat ptáčkum do krmítka :-)
Každopádně díky za reakci.
- David Grudl
- Nette Core | 8227
Pokud ti to vadí jenom kvůli těm dumpům, tak si udělej funkci který
řádek v tabulce zamění za $row->toArray()
array_map(fn($r) => $r->toArray(), $rows)
- MajklNajt
- Člen | 498
emil54 napsal(a):
Jasne, ja si na to nejak zvyknu, a neprudim. Jen by mne fakt zajimal duvod… Ale treba na to prijdu, kdyz konecne poradne prolezu zdrojaky.
Jinak, Davide, musim tobe a lidem kolem tebe za praci a usili, ktery do Nette investujete podekovat. Mate muj hlubokej obdiv…
dôvod je úplne jednoduchý – ťahá sa z databázy iba to, čo potrebuješ, ak nepracuješ so žiadnymi stĺpcami, žiadne sa neťahajú, ak napr. v šablóne použiješ 3 stĺpce z 10, vytiahnu sa iba tieto 3 stĺpce