从yii框架Active Record模式中的关系表中检索数据

时间:2014-05-18 07:13:28

标签: php mysql sql yii relational

我想为应用程序的管理员生成一份报告。它是一个小型的自由职业网站。 我使用Yii 1.1.14和Mysql作为数据库。 我在数据库中有3个关系表,我想从中检索一些数据。 我只显示那些关系的字段,可能需要了解工作范围。

带有字段的用户表: id |名字|电子邮件|密码| type(它的用户类型,自由职业者,项目所有者或管理员)

带有字段的出价表: id | project_id(引用项目的外键(' id'))| freelancer_id(引用用户的外键(' id'))

包含字段的项目表: id |标题|描述| selected_bid(为项目选择的出价的ID)。

id通常都是主键。

所以我想得到的是: 前端的表格,其中包含所有这些用户的姓名,电子邮件,电话号码和关于他的项目的信息,每个人都在一行中。 请建议实现这一目标的最佳方法是什么? 我已经尝试过了。 请不要发布Yii的文档或Larry的基础教程。我已经完成了基本规则。

我希望自己清楚明白。 谢谢大家。

3 个答案:

答案 0 :(得分:0)

我对您的问题的理解是,您希望从3个表中将所有数据放在一起。在这种情况下,您可以在控制器中使用Join Query。

答案 1 :(得分:0)

虽然我不确定你的链接模型你的外键是否也是主键?但你可以像......一样经历......

class User extends CActiveRecord{
    ...
    public function relations()
      {
        return array(
        'bids'=>array(self::HAS_MANY,'Bid','| freelancer_id'),
        'users'=>array(
            self::HAS_MANY,'Project',array('user_id'=>'id'),**'through'=>'bids'**
          ),

        );
    }
  }


//then use as ....
// get all Projects with all corresponding users
$user = User::model()->with('users')->findAll();

答案 2 :(得分:0)

在您的用户模型中添加

class User extends CActiveRecord{
 ...
    public function relations()
    {
        // NOTE: you may need to adjust the relation name and the related
        // class name for the relations automatically generated below.
        return array(
            'bid'=>array(self::BELONGS_TO, 'Bid', array('id'=>'freelancer_id')),
            'project'=>array(self::BELONGS_TO, 'Project', array('id'=>'selected_bid'), 'through'=>'bid')
        );
    }
}

添加出价模型添加

class Bid extends CActiveRecord
{
    ...
    public function relations()
    {
        // NOTE: you may need to adjust the relation name and the related
        // class name for the relations automatically generated below.
        return array(
            'project'=>array(self::BELONGS_TO, 'Project', array('id'=>'selected_bid'))
        );
    }
}

现在你可以让所有选择项目的自由职业者。