/ / ZF2: DBAbstractTableGateway: जोइन का उपयोग कैसे करें? - zend-Framework2

ZF2: DBAbstractTableGateway: जॉइन का उपयोग कैसे करें? - ज़ेंड-फ्रेमवर्क 2

मैं ZF में नया हूं और नीचे एक कोड स्थित है। मैं कस्टम कॉलम्स प्राप्त करने और sql चयन में शामिल होने की कोशिश करता हूं, लेकिन यह विफल रहा। मैंने खोज का उपयोग करने की कोशिश की लेकिन कोई परिणाम नहीं मिला। मुझे और जटिल प्रश्न करने के उदाहरण बताएं। धन्यवाद।

<?php

namespace FcFlightModel;

use ZendDbTableGatewayAbstractTableGateway;
use ZendDbAdapterAdapter;
use ZendDbResultSetResultSet;
use ZendDbSqlSelect;
use FcFlightFilterFlightHeaderFilter;

class FlightHeaderModel extends AbstractTableGateway
{

/**
* @var string
*/
protected $table = "flightBaseHeaderForm";

/**
* @param ZendDbAdapterAdapter $adapter
*/
public function __construct(Adapter $adapter)
{
$this->adapter = $adapter;
$this->resultSetPrototype = new ResultSet();
$this->resultSetPrototype->setArrayObjectPrototype(new FlightHeaderFilter($this->adapter));
$this->initialize();
}

/**
* @param $id
* @return array|ArrayObject|null
* @throws Exception
*/
public function get($id)
{
$id = (int)$id;
$rowSet = $this->select(array("id" => $id));
$row = $rowSet->current();
if (!$row) {
throw new Exception("Could not find row $id");
}
$row->dateOrder = date("Y-m-d", $row->dateOrder);

return $row;
}
}

उत्तर:

उत्तर № 1 के लिए 4

चूंकि आप टेबलगेटवे का उपयोग कर रहे हैं, इसलिए आपको Sql () का एक उदाहरण प्राप्त करना होगा: $this->getSql();

उस उदाहरण के साथ आप Select का एक उदाहरण बनाएंगे, जो तब आपको एक प्रदर्शन करने देगा:

$sql = $this->getSql();
$select = $sql->select();
$select->join("TableNameToJoin", "MainColumnA = JoinColumnA");

फिर क्वेरी निष्पादित करने के लिए, आप अपने टेबल पर चयन करें:

$this->selectWith($select);

यदि आप आगे जुड़ने को अनुकूलित करना चाहते हैं, तो आप दो और तर्क दे सकते हैं:

  • आपके द्वारा चयनित कॉलमों की एक सरणी
  • आप जिस प्रकार से जुड़ना चाहते हैं (उदाहरण के लिए LEFT JOIN)

आप सारणी के रूप में एक ऐरे को पास करके जिस तालिका में शामिल हो रहे हैं, उस पर एक उपनाम भी जोड़ सकते हैं key सरणी का उपनाम और value तालिका का नाम होने के नाते।

$select->join(["Alias" => "TableNameToJoin"], "MainColumnA = Alias.JoinColumnA", ["ColumnA", "ColumnB"], $select::JOIN_LEFT);