【问题标题】:Symfony2 & Propel: How to query objects ordered by their i18n columnSymfony2 & Propel:如何查询按 i18n 列排序的对象
【发布时间】:2013-04-29 06:02:18
【问题描述】:

假设我的架构类似于以下内容 -

<?xml version="1.0" encoding="UTF-8" ?>
<table name="vegetables" phpName="Vegetable">
  <column name="id" type="integer" required="true" primaryKey="true" autoIncrement="true" />
  <column name="name" type="varchar" required="true" />
  <behavior name="i18n">
    <parameter name="i18n_columns" value="name" />
  </behavior>
</table>

在我的控制器类中,我会做这样的事情来获取Vegetable Objects。

$vegetables = VegetableQuery::create()->joinWithI18n($locale = 'en_US')->find();  //To get all vegetables
//or
$vegetables = VegetableQuery::create()->orderById()->joinWithI18n($locale = 'en_US')->find(); //To get all vegetables order by id
//And then to iterate I would do something like follow -
foreach($vegetables as $vegetable){
  //Do something with $vegetable here
}

现在的问题是,在这种情况下,如果我想使用 i18n 列(即名称)订购我的查询,我应该如何查询。

我找到了一个替代解决方案如下 -

$vegetables_i18n = VegetableI18nQuery::create()->orderByName('asc')->filterByLocale('en_US')->joinVegetable()->find();
// And then to iterate all the vegetables I would do something like follow
(foreach $vegetables_i18n as $vegetable_18n){
  $vegetable = $vegetable_18n->getVegetable();
  //Do something $vegetable here
}

我真的很想知道是否还有其他替代方法来编写按 i18n 列排序的vegetables 查询。 (更准确地说,我想在上面的VegetableQuery 类而不是上面的VegetableI18nQuery 类上写一个查询。)

如果您能提供帮助,我们将不胜感激。

【问题讨论】:

    标签: symfony propel


    【解决方案1】:

    我通过以下方式找到了答案-

    $vegetables = VegetableQuery::create()->joinWithI18n($locale = $propel_locale)->orderBy('VegetableI18n.name', 'asc' );
    

    【讨论】:

      猜你喜欢
      • 2012-09-17
      • 1970-01-01
      • 2016-01-31
      • 1970-01-01
      • 1970-01-01
      • 2023-04-03
      • 2014-02-04
      • 1970-01-01
      • 2012-02-13
      相关资源
      最近更新 更多