php - Symfony 访问自定义 propel 查询

标签 php mysql symfony1 propel

我正在尝试使用 Symfony 1.4 和 propel ORM 来完成我认为是一项微不足道的任务。我有一个自定义静态类设置,我想用它通过搜索项目名称来返回行的 id。

这是我的功能:

static public function getItemIdByName ( $name )
{
    $criteria = new Criteria();
    $criteria-> clearSelectColumns();
    $criteria -> add (ItemsPeer::ITEM_NAME, $name, Criteria::LIKE );
    $criteria -> addSelectColumn(ItemsPeer::ITEM_ID);
    $criteria -> setLimit (1);

    $itemID = ItemsPeer::doSelect( $criteria );

    return $itemID;
}

现在,当我返回 $itemID 时,我会得到该项目的名称。但是,我根本无法获取 item_id 列。我尝试返回 $itemID[1] 和其他几个列索引,但它说这些不存在。如果我 print_r($itemID),我会看到该表中每一列的数组,唯一有值的两个是 item_id 和 item_name。但是,我仍然找不到返回或访问该变量的方法。

有什么建议吗?

最佳答案

我认为错误发生在clearSelectColumns的位置,但我可能弄错了。尝试使用 doSelectStmt 而不是 doSelect:

$c = new Criteria();
$c->add(ItemsPeer::ITEM_NAME, $name, Criteria::LIKE);
$c->clearSelectColumns();
$c->addSelectColumn(ItemsPeer::ITEM_ID);
$c->setLimit(1);

$stmt = ItemsPeer::doSelectStmt($c);
return $stmt->fetch(PDO::FETCH_COLUMN); // $itemID

这应该可以解决您的问题。但是,如果您使用 sf 1.4 且 Propel >= 1.5,我建议您使用 Propel Query:

return ItemsQuery::create()
  ->filterByItemName($name . '%')
  ->select('ItemId')
  ->findOne();

关于php - Symfony 访问自定义 propel 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9549330/

相关文章:

php - 如何使用 CodeIgniter 格式化日期

php - 一个数据库中有两个表,但只有一个在工作

php - Div 将更改与将类放在 id 之后对齐

php - MySQL - 动态计算字段与存储计算数据

php - 如何调试执行线

mysql - 创建 View ,错误代码 : 1052. 字段中的列 "id"不明确

php - 使用 MySQL 字段标志作为 PHP 模型生成的参数

sql - Doctrine ORM - 自连接,没有任何实际关系

php - 是否有一个 Symfony 助手来获取当前操作 URL 并更改一个或多个查询参数?

symfony1 - 如何在管理生成器中将 sfWidgetFormDoctrineChoice 设为 "order by"