0

我有:

# config/schema.yml
propel:
  jobeet_category:
    id:           ~
    name:         { type: varchar(255), required: true, index: unique }

  jobeet_job:
    id:           ~
    category_id:  { type: integer, foreignTable: jobeet_category, foreignReference: id, required: true }
    type:         { type: varchar(255) }
    company:      { type: varchar(255), required: true }

例如:

JobeetCategory:

id | name
1  | first
2  | second

JobeetJob:

id | category_id | name
1  | 1           | bbb
2  | 1           | ccc
3  | 1           | aaa
4  | 2           | zzz
5  | 2           | xxx

我这样做:

$c = new Criteria();
$categories = JobeetCategoryPeer::doSelect($c);

我可以:

foreach($categories as $category){

  echo $category->getName();
  foreach ($category->getJobeetJobs() as $job){
          echo '-' . $job->getName();
  }
}

这告诉我:

 first
 - bbb
 - ccc
 - aaa
 second
 - zzz
 - xxx

但我想对此进行排序ASC by NAME

 first
 - aaa
 - bbb
 - ccc
 second
 - xxx
 - zzz

我怎样才能用 PROPEL QUERY 做到这一点?

4

3 回答 3

1

如果你提到了你正在使用的 symfony 和推进的版本,那会更容易。但这里有一些可能有用的东西,希望它有所帮助。

$categories = JobeetCategoryQuery::create()
                            ->addJoin(JobeetJobPeer::CATEGORY_ID, JobeetCategoryPeer::ID)
                            ->addAscendingOrderByColumn(JobeetJobPeer::NAME)
                            ->find();

万一 Query 不存在,您可以为此目的使用标准。

  $criteria = new Criteria();
  $criteria->addJoin(JobeetJobPeer::CATEGORY_ID, JobeetCategoryPeer::ID)
                        ->addAscendingOrderByColumn(JobeetJobPeer::NAME);
  $categories = JobeetCategoryPeer::doSelect($criteria);
于 2012-08-01T14:07:56.667 回答
1

我知道这是一个老问题,但想提供一种更新的方法来做到这一点。您可以将查询对象传递给您的 getter:

foreach($categories as $category){
  echo $category->getName();
  $q = JobeetJobQuery::create()->orderByName();
  foreach ($category->getJobeetJobs($q) as $job){
          echo '-' . $job->getName();
  }
}
于 2017-09-27T16:05:11.803 回答
0
$c = new Criteria();
$c->addJoin(JobeetJobPeer::CATEGORY_ID, JobeetCategoryPeer::ID, Criteria::INNER_JOIN);
$c->addAscendingOrderByColumn(JobeetJobPeer::NAME);

$categories = JobeetCategoryPeer::doSelect($c);

但是jobeet_job没有列name。您是否使用自定义吸气剂$job->getName()

于 2012-08-01T14:17:06.977 回答