En el momento que cargas el modelo de complejos ya tienes todas sus canchas!!!!!!! Claro está si tienes bien definidos tus modelos.
Además, estás usando la variable $table2 antes de crearla?!?!?!
Este código no te puede funcionar ni con una sola tabla!
Si haces esto:
$complejos = t_complejos::findAll();
ya tienes todos los complejos con sus canchas relacionadas.
foreach($complejos as $complejo)
{
echo($complejo->FK_Cancha->nombreCancha);// FK_Cancha sería el nombre de la relación que en tu modelo complejos
// tienes con canchas 8obviamente tú tendrás un nombre distinto), y nombreCancha
// sería el nombre de la cancha (que tú igual ni tienes, tendrás que cambiarlo por
// atributo de canchas que desees recuperar).
}
Revisa algún manual de patrones MVC, que es lo que te falta.
Como que qué va ahí? pero si te lo explico en el comentario…
Yo supongo que tienes un atributo llamado nombreCacha, pero tendrías q cambiarlo por el atributo del modelo que quieras recuperar.
Y findOne es un método de CActiveRecord. Si te lees la API de CActiveRecord verás que findOne recupera un modelo de la tabla que tu quieras.
Y dirás: "Lo que yo decía, de una tabla".
Y yo diré: "Sí, efectivamente, pero es q los modelos CActiveRecord están construidos sobre una tabla, pero cada uno tiene también las relaciones con las demás tablas."
Mira, como ya te explicamos en este post y en otros muchos, lee algo sobre patrones MVC y la API de Yii para saber que es cada cosa. No tiene sentido que utilices un CActiveRecord si no sabes lo que es.
Respondiendo a tu último mensaje:
findOne te recupera un modelo de datos de la tabla relacionada. Ese modelo tendrá una serie de propiedades entre las que se encuentran las relaciones con las demás tablas, mediante las cuáles podrás acceder a las propiedades relacionadas con el modelo cargado.
Un ejemplo en Yii2:
Tus modelos:
class Customer extends ActiveRecord
{
public function getOrders()
{
return $this->hasMany(Order::className(), ['customer_id' => 'id']);
}
}
class Order extends ActiveRecord
{
public function getCustomer()
{
return $this->hasOne(Customer::className(), ['id' => 'customer_id']);
}
}
Por ejemplo en tu controlador:
// SELECT * FROM `customer` WHERE `id` = 123
$customer = Customer::findOne(123);
// SELECT * FROM `order` WHERE `customer_id` = 123
// $orders is an array of Order objects
$orders = $customer->orders;// orders apunta al método getOrders del modelo Customers.