How to access fields of relation mappings table yii2
I have three tables named "agency", "property" and "property_agency_map"
agency :
--------------------------
| id => primary key ... |
| name => string ... |
| and som more fields |
--------------------------
property :
--------------------------
| 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 ... |
------------------------------
the property_agency_map table maps the agency table to the property table .
agency model:
public function getProperties(){
return $this->hasMany(Property::className(),['id'=>'property_id'])
->viaTable('"{{%property_agency_map}}"',['agency_id'=>'id']);
}
Now My question is, how to access the "favorites" and "status" field in the property_agency_map ?
+3
source to share
1 answer
You must create a new method to get the property_agency_map properties for the agency:
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']);
}
}
+3
source to share