簡體   English   中英

從Doctrine中的兩個表中檢索數據

[英]Retrieving data from two tables in Doctrine

我在這里有一個小問題:

$advList = Doctrine::getTable('Advertiser')
        ->createQuery('a')
        ->leftJoin('a.PrincCity p')
        ->leftJoin('a.TourCity t')
        ->leftJoin('a.Category')
        ->orderBy('a.new DESC')
        ->where('a.is_activated = ?', true)
        ->andWhereNotIn('a.category_id', array(4, 5))
        ->andWhere('( (t.slug IS NULL AND p.slug = ?) OR t.slug = ?)', array($city_slug, $city_slug))
        ->addOrderBy('a.created_at DESC');

    $this->pager = new sfDoctrinePager('Advertiser', 50);
    $this->pager->setQuery($advList);
    $this->pager->setPage($request->getParameter('page', 1));
    $this->pager->init();

此代碼從一個城市獲取所有廣告客戶(在表Advertiser中由ID表示)-現在我有了第二個表Advertiser-City,其中包含id,AdvertiserId和CityID,因此我可以為一個廣告商擁有多個城市(例如5個廣告客戶ID為99的行, CityID)。

問題是我需要從一個城市獲取所有廣告商,但是上層代碼只能與數據庫中的一個表一起使用,因此我不知道如何在第二個表中(與其他城市一起)進行搜索。

我不確定我是否能理解您的問題,但是我認為,如果您已經明確定義了nm Advertiser-city關系:

Advertiser:
  ...
  relations:
    Cities: { class: City, refClass: AdvertiserCity, local: advertiser_id, foreign: city_id } 

AdvertiserCity:
  columns:
    advertiser_id: { type: integer,...}
    city_id: { type: integer,....}
  ...
  relations:
    City: { local: city_id, foreign: id, foreignAlias: AdvertiserCities } 
    Advertiser: { local: advertiser_id, foreign: id, foreignAlias: AdvertiserCities } 

然后,您的查詢可以像這樣:

$advList = Doctrine::getTable('Advertiser')
        ->createQuery('a')
        ->innerJoin('a.Cities c')
        ...
        ->addWhere('c.id = ?',$city_id)
        ...;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM