【问题标题】:Multiple joins using active record with YII framework使用带有 YII 框架的活动记录的多个连接
【发布时间】:2013-02-18 11:30:03
【问题描述】:

我被 yii 的活动记录卡住了。

我为我的数据库中的每个表使用模型。

我尝试获取的 sql 是从 3 个表中查询和加入。

我想要完成的是相当于sql命令:

   SELECT  location_code as stopkey, bay_no bay_no, description stop_name, route_area_code route_area_code, latitude latitude, longitude, build_code build_code, message_time message_time, ip_address ip_address, route.route_code route, make make, last_impact last_impact, impact_count impact_count, last_bootup last_bootup, bootup_count bootup_count, last_active_hour last_active_hour, last_active_day last_active_day, operator.operator_code operator_code, routes routes, bearing  
                FROM snapshot_stop_status route
                JOIN  route_visibility ON route.route_id = route_visibility.route_id
                JOIN  operator ON operator.operator_id = route_visibility.operator_id
                WHERE usernm = 'me'

    ORDER BY  location_code

这是我迄今为止尝试过的:

 public function relations() {

            return array(
              'RoutesVisibility' =>array(self::MANY_MANY,'route_visibility','route_id'),

            );
        }

我如何在模型中使用关系函数来实现这一点?

任何形式的帮助都将不胜感激

【问题讨论】:

    标签: sql activerecord yii


    【解决方案1】:

    route_visibility 是将 operator 绑定到 snapshot_stop_status 的连接表。所以在 yii 中你可以指定做关系的表:

    'operators' =>array(self::MANY_MANY,'Operator','route_visibility(route_id,operator_id )'),
    

    在运算符中:

    'routes' =>array(self::MANY_MANY,'Route','route_visibility(operator_id, route_id)'),
    

    然后你可以请求类似:

    $criteria = new CDbCriteria;
    $criteria->with = array('operators' => array('condition' => 'usernm = "me"'));
    $models => Route:model()->findAll($criteria);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-06
      • 1970-01-01
      • 1970-01-01
      • 2023-03-16
      • 2020-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多