如何访问yii2关系映射表字段

时间:2015-07-17 12:50:17

标签: php relational-database yii2

我有三张名为'agency','property'和'property_agency_map'的表

代理商表:

--------------------------
| id => primary key ...  |
| name => string ...     |
| and som more fields    |
--------------------------

属性表:

--------------------------
| id => primary key ...  |
| state => string ...    |
| adress => string ...   |
| and som more fields    |
--------------------------

property_agency_map 表格:

------------------------------
| id => primary key ...      |
| agency_id => string ...    |
| property_id => string ...  |
| status =>  intiger ...     |
| favorite =>  intiger ...   |
------------------------------

property_agency_map 表格将代理商表格连接到属性表格。

代理商模式:

 public function getProperties(){
    return $this->hasMany(Property::className(),['id'=>'property_id'])
        ->viaTable('"{{%property_agency_map}}"',['agency_id'=>'id']);
}

现在我的问题是如何访问 property_agency_map 中的“收藏”和“状态”字段?

1 个答案:

答案 0 :(得分:3)

您应该创建新方法来获取代理商的property_agency_map项目:

namespace app\models;

use yii\db\ActiveRecord;

class PropertyAgencyMap extends ActiveRecord
{
    /**
     * @return string the name of the table associated with this ActiveRecord class.
     */
    public static function tableName()
    {
        return 'property_agency_map';
    }
}

class Agency extends ActiveRecord
{
    /**
     * @return string the name of the table associated with this ActiveRecord class.
     */
    public static function tableName()
    {
        return 'agency';
    }

    /**
     * @return \yii\db\ActiveQuery
     */
    public function getPropertyAgency()
    {
        return $this->hasMany(PropertyAgencyMap::className(), ['agency_id' => 'id']);
    }
}