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 と propel のバージョンについて言及していれば、より簡単だったでしょう。しかし、これが役立つことを願ってうまくいくかもしれません。

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

クエリが存在しない場合に備えて、目的に基準を使用できます。

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

これは古い質問であることは知っていますが、これを行うための最新の方法を提供したかったのです。クエリ オブジェクトをゲッターに渡すことができます。

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 に答える