ZF2 TableGateway beitreten
Ich bin in den Prozess der versucht zu lernen, OOP/Zend Framework über die standard-PHP - .. ich will Schreien und schreiben Sie eine mysql-Abfrage statt TableGateway-Methode.
Habe ich nach tutorials und erfolgreich gedruckt, ein Tisch und einige Felder, die, obwohl mit der Art, wie ich gegangen bin über das tun dies, ich bin Total verloren in der, wie ich sollte dies ein join mit einer anderen Tabelle und drucken Sie einige Felder gibt.
Zum Beispiel.
Felder Der Tabelle
Kunden Idx, Unternehmen
Kontakt Idx, First_Name
Dies ist mein customersController, wo ich davon ausgehen, - arbeiten ausgeführt werden
namespace Customers\Controller;
use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;
use Zend\DB\TableGateway\TableGateway;
class CustomersController extends AbstractActionController
{
protected $customersTable;
public function indexAction()
{
return new ViewModel(array('customer' => $this->getCustomersTable()->select()));
//return new ViewModel(array('customers' => $this->fetchJoin()->select()));
}
public function addAction()
{
}
public function editAction()
{
}
public function deleteAction()
{
}
public function getCustomersTable()
{
if (!$this->customersTable) {
$this->customersTable = new TableGateway (
'customer', //table name
$this->getServiceLocator()->get('Zend\DB\Adapter\Adapter')
);
}
return $this->customersTable;
}
}
Bin ich auf dem richtigen Weg?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie brauchen, um joins Lesen über Zend\Db\Sql und Zend\Db\Select
die Sie hier nachlesen können
Ein Beispiel wäre:
In Ihrem Modell (, erstreckt sich das TableGateway oder die AbstractTableGateway)
in Einigen Funktion können Sie sowas haben(dies ist aus einem Projekt) :
Dann können Sie mit einer Schleife über die Ergebnisse und das tun, was Sie müssen.
Einen Blick auf mehr leistungsfähige ORM wie Doctrine oder Propel kann auch helfen, aber vielleicht ein overkill für eine kleine/hobby-Projekt.
EDIT: Antwort für was wurde gebeten, in den Kommentaren
Für die Verwendung von Ausdruck(if, case etc.) direkt können Sie so etwas wie :
Erklärung der letzten Zeile in der SQL-Bedingungen, wäre es:
count(*) AS some_count
Dies ist also meine controller, die im Grunde aus dem Album Beispiel, aber jetzt wird es display Kunden aus der Tabelle Kunden.
Die indexAction Aufrufe der getCustomersTable-Methode, das geht auf das Modell (CustomersTable) und führt die "Abfrage" gibt.
Also aus deinem Beispiel, sollte ich versuchen umzusetzen, diese in die fetchAll in das Modell?
Vielen Dank für die Hilfe.