【发布时间】:2011-05-31 16:35:05
【问题描述】:
我确实有一个名为"tax" 的表,其中包含两列"id | tax_value"。我可以很好地列出带有foreach 的表。
现在我的问题是,当我只想拥有 php 代码中的一个特定行和列?我不希望它在查询中!!!
例如:
column 2 (tax_value)
row 1.
查询给了我一个数组,对吧?
【问题讨论】:
我确实有一个名为"tax" 的表,其中包含两列"id | tax_value"。我可以很好地列出带有foreach 的表。
现在我的问题是,当我只想拥有 php 代码中的一个特定行和列?我不希望它在查询中!!!
例如:
column 2 (tax_value)
row 1.
查询给了我一个数组,对吧?
【问题讨论】:
在 TaxTable.class.php 中:
public function getOneById($id)
{
$q = Doctrine_Query::create()->select("t.tax_value")
->from("tax t")
->where("t.id = ?", $id)
->fetchOne();
return $q;
}
在行动:
public function executeTaxView(sfWebRequest $request)
{
$this->tax = TaxTable::getInstance()->getOneById($request->getParameter("id"));
$this->forward404Unless($this->tax);
}
在 taxViewSucess.php 中:
Tax Value: <b><?php echo $tax->getTaxValue();?></b>
【讨论】:
您可以使用Doctrine::HYDRATE_SINGLE_SCALAR 在您的选择语句中获取单行和单列:
$total = Doctrine_Query::create()->from('Products p')
->select('SUM(p.amount) as total')
->where('p.category_id = ?', $categoryId)
->fetchOne(array(), Doctrine::HYDRATE_SINGLE_SCALAR);
// $total is now a single value, eg. 12
示例使用带有类别的虚构产品表,并选择某个类别的产品数量。
你如何在 symfony 中使用这个查询取决于你的需要:在一个表类、模型类、动作中……
【讨论】:
如果你使用Doctrine_Query,那么你可以使用 fetchOne 来抓取一行。此外,自从我使用 Doctrine 1 以来已经有一段时间了,但我几乎可以肯定,使用 Doctrine_Query 您可以将字段选择列表设置为一列。
【讨论】: