fetchAll() to array → undeclared column

MW
Člen | 615
+
0
-

Zdravím a prosím o radu,

Mám následující kód a ne a né v tom podcyklu rozšířit pole o actions[].
Už jsem se v tom zamotal a asi dělám triviální chybu, ale nevidím ji..

Moc díky za nakopnutí :)

public function getRides($from, $to) {

	$results = $this->database->query("SELECT e.id,
				CONCAT_WS(':', e.date, e.drivers_id, e.trucks_id, e.codrivers_id, e.trailers_id) AS ident
				FROM rides e WHERE date BETWEEN ? AND ?", $from, $to)->fetchAll();

	foreach ($results as $result) {
	     $rides[$result["ident"]] = $result;

		    $actions = $this->database->query("SELECT * FROM actions WHERE rides_id = ?", $result['id'])->fetchAll();

			foreach ($actions as $item) {
			    $rides[$result['ident']]['actions'][] = $item; //Cannot read an undeclared column 'actions'

			}

	}


	return 	$rides;

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

není nic jednoduššího než si to oddebugovat a podívat se co tam máš

ale jinak tady nastavuješ něco

$rides[$result["ident"]] = $result;

a pak tam voláš klíč actions, který ale nikde nemáš, odkud by se asi tak měl vzít?

Editoval Ondřej Kubíček (20. 5. 2018 12:19)

MW
Člen | 615
+
0
-

Pokud to provedu takto:

$rides[$result['ident']]['actions'] = $item;

a dumpnu, tak mě to přidá klíč ACTION s hodnotou $item, to je v pořádku.

Hodnot je ale více a proto to

$rides[$result['ident']]['actions'][]

což mě ale nefunguje…

stejně jako ručně přidaný iterator

$rides[$result['ident']]['actions'][$i]

vždy pak nastává „Cannot read an undeclared column ‚actions‘“

Co mě uniká prosím?

Editoval MW (20. 5. 2018 14:05)

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

uniká ti to, jak se pracuje v php s poli

co to upravit nějak takhle

$rides[$result["ident"]] = ['result' => $result, 'actions' => []];


$rides[$result['ident']]['actions'][] = $item;

pak budeš mít pod tím klíčem $result["ident"] pole o dvou položkách, první result a druhé pole actions

MW
Člen | 615
+
0
-

Nj, ja pořád cpal ten klíč do toho pole nikde ho nedefinoval :)
Já věděl, že je to moje blbost.. moc díky…