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


How to Access yii2 relation map table fields

我有三个表,名称是'agency', 'property'和'property_agency_map'

agent table:

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

property table:

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

property_agency_map table:

------------------------------
| 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 ??

您应该创建一个新的方法来获取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']);
    }
}