Ich habe eine MariaDB-Abfrage, die ich in meiner Laravel-Anwendung verwende, und möchte, dass 7 Spalten zurückgegeben werden. Wenn ich das resultierende Array mit PHP speichere, scheint es nur 4 zurückzugeben. Wenn ich jedoch dieselbe Abfrage nehme und sie im PhpMyAdmin SQL-Editor ausführe, werden alle 7 genau so zurückgegeben, wie ich es erwarten würde.
Sie haben sich nur gefragt, warum Laravel die Ergebnisse möglicherweise nur nach vier Spalten, Status, Name, Telefonnummer und Beschreibung filtert.
Vielen Dank!
Laravel-Abfrage:
$entries = DB::select('SELECT status, contacts.name, contacts.telephone_number, companies.name, roles.name, stages.description, actions.description FROM entries JOIN contacts ON entries.contact_id = contacts.id JOIN companies ON contacts.id = companies.contact_id JOIN roles ON companies.id = roles.company_id JOIN stages ON roles.id = stages.role_id JOIN actions ON stages.id = actions.stage_id');
Abfrage für PHPMyAdmin SQL Editor:
SELECT status, contacts.name, contacts.telephone_number, companies.name, roles.name, stages.description, actions.description FROM entries JOIN contacts ON entries.contact_id = contacts.id JOIN companies ON contacts.id = companies.contact_id JOIN roles ON companies.id = roles.company_id JOIN stages ON roles.id = stages.role_id JOIN actions ON stages.id = actions.stage_id
2 Antworten
In beiden Fällen ist es das gleiche Ergebnis. Sie verwenden nur dasselbe Attribut, sodass sich das Ergebnis in beredter Sprache gegenseitig überschreibt. Verwenden Sie Aliase, um das Problem zu beheben
SELECT status, contacts.name as contact_name, contacts.telephone_number, companies.name as company_name, roles.name as role_name , stages.description, actions.description FROM entries JOIN contacts ON entries.contact_id = contacts.id JOIN companies ON contacts.id = companies.contact_id JOIN roles ON companies.id = roles.company_id JOIN stages ON roles.id = stages.role_id JOIN actions ON stages.id = actions.stage_id
Wie @ N69S antwortete, sollten Sie Aliase festlegen, um das Überschreiben zu vermeiden. Eine andere Sache, wenn Sie Laravel verwenden, ist Ihr Freund beredt:
$entries = DB::table('entries')
->join('contacts', 'entries.contact_id', '=', 'contacts.id')
->join('companies', 'contacts.id', '=', 'companies.contact_id')
->join('roles', 'companies.id', '=', 'roles.company_id')
->join('stages', 'roles.id', '=', 'stages.role_id')
->join('actions', 'stages.id', '=', 'actions.stage_id')
->select('status', 'contacts.name AS contact_name', 'contacts.telephone_number', 'companies.name AS company_name', 'roles.name AS role_name', 'stages.description AS stage_description', 'actions.description AS action_description')
->get();
Ein besserer Ansatz wird darin bestehen, Modelle zu verwenden und Beziehungen festzulegen.
Verwandte Fragen
Neue Fragen
php
PHP ist eine weit verbreitete, übergeordnete, dynamische, objektorientierte und interpretierte Skriptsprache, die hauptsächlich für die serverseitige Webentwicklung entwickelt wurde. Wird für Fragen zur PHP-Sprache verwendet.