1

我被 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'),

            );
        }

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

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

4

1 回答 1

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);
于 2013-02-18T13:16:11.410 回答