Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/248.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从Doctrine中的两个表中检索数据_Php_Doctrine_Symfony 1.4 - Fatal编程技术网

Php 从Doctrine中的两个表中检索数据

Php 从Doctrine中的两个表中检索数据,php,doctrine,symfony-1.4,Php,Doctrine,Symfony 1.4,我这里有个小问题: $advList = Doctrine::getTable('Advertiser') ->createQuery('a') ->leftJoin('a.PrincCity p') ->leftJoin('a.TourCity t') ->leftJoin('a.Category') ->orderBy('a.new DESC') ->where

我这里有个小问题:

$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行,其中AdvertiserId 99和不同的CityID)


问题是,我需要从一个城市获取所有广告商,但上面的代码只能在DB中的一个表中使用,因此我不知道如何在第二个表中搜索(使用其他城市)。

我不确定我是否能理解您的问题,但我认为如果您定义了n-m广告商-城市关系:

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)
        ...;

我不确定我是否能理解您的问题,但我认为如果您对n-m广告商与城市的关系有明确的定义:

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)
        ...;