0
すべて!誰もがこの問題の解決策を見つける方法を知っていることを願っています。私は参加するために3つのテーブルを持っていますが、私はjoinメソッドを使って参加しようとすると、関連するテーブルを取得することができず、ステートメントが全く動かない。だから、私は、私は、しかし、それはあまりにも働いていなかった、yii2方法とを経由して溶液を作製する方法Yii2で3つの結合を使用してクエリを作成する方法
public static function get_by_abc($letter = null,
$object = false) {
$result = self::find()
->join('INNER JOIN', 'geo_place', 'geo_place.city_id = geo_city.id')
->join('INNER JOIN', 'bus_station', 'geo_place.place_id = bus_station.geo_place_id')
->join('INNER JOIN', 'bus_company', 'bus_station.company_id = bus_company.id')
//->innerJoinWith('companies')
->where(['bus_company.active' => 1])
->andWhere(['like', 'geo_city.name', $letter.'%', false]);
if(!$object) $result->asArray();
return $result->all(); //->createCommand()->rawSql
}
次しようとしていたしました:(私は
public function getCompanies() {
return $this->hasMany(BusCompany::className(), ['id' => 'company_id'])
->viaTable('bus_station', ['geo_place_id' => 'place_id'])
->viaTable('geo_place', ['city_id' => 'id']);
}
しかし、この中のようになります。 。私はbus_stationでgeo_placeとbus_companyに参加しますが、していない場合
ので、テーブルの構造は次のようになります。