我正在尝试使用 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/