【问题标题】:Simple doctrine query -> one specific row and column简单的学说查询 -> 一个特定的行和列
【发布时间】:2011-05-31 16:35:05
【问题描述】:

我确实有一个名为"tax" 的表,其中包含两列"id | tax_value"。我可以很好地列出带有foreach 的表。

现在我的问题是,当我只想拥有 php 代码中的一个特定行和列?我不希望它在查询中!!!

例如:

column 2 (tax_value)

row 1.

查询给了我一个数组,对吧?

【问题讨论】:

    标签: php symfony1 doctrine


    【解决方案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>
    

    【讨论】:

      【解决方案2】:

      您可以使用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 中使用这个查询取决于你的需要:在一个表类、模型类、动作中……

      【讨论】:

        【解决方案3】:

        如果你使用Doctrine_Query,那么你可以使用 fetchOne 来抓取一行。此外,自从我使用 Doctrine 1 以来已经有一段时间了,但我几乎可以肯定,使用 Doctrine_Query 您可以将字段选择列表设置为一列。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-11-20
          • 1970-01-01
          • 1970-01-01
          • 2011-09-11
          • 1970-01-01
          • 1970-01-01
          • 2015-12-20
          相关资源
          最近更新 更多