У меня возникли проблемы с отношениями между таблицами с CakePHP 3.x. Я изо всех сил пытаюсь сделать realcionamento между столами с более чем 2 уровнями realcionamento. я представлю кодекс отношений, а также вопрос, что я делаю, чтобы сделать его более ясным, что поведение отношения:cakePHP 3: multi JOIN
class CircuitosTable extends Table{
public function initialize(array $config)
{
$this->table('circuitos');
$this->addAssociations([
'belongsTo' => [
'Planostreinos' => [
'foreignKey' => 'id_plano_treino',
'joinType' => 'INNER',
'bindingKey' => 'id'
]
],
'hasMany' => [
'Atividades' => [
'className' => 'Atividades',
'foreignKey' => 'id_circuito',
'bindingKey' => 'id',
'joinType' => 'INNER',
'dependent' => false,
'cascadeCallbacks' => false,
'propertyName' => '_atividades'
],
]
]);
}
}
class AtividadesTable extends Table{
public function initialize(array $config)
{
$this->table('atividades');
$this->addAssociations([
'belongsTo' => [
'Tiposexercicios' => [
'foreignKey' => 'id_tipo_exercicio',
'joinType' => 'INNER',
'bindingKey' => 'id'
],
'Circuitos' => [
'foreignKey' => 'id_circuito',
'joinType' => 'INNER',
'bindingKey' => 'id'
]
]
]);
}
}
class TiposexerciciosTable extends Table{
public function initialize(array $config)
{
$this->table('tipos_exercicios');
$this->addAssociations([
'hasMany' => [
'Atividades' => [
'className' => 'Atividades',
'foreignKey' => 'id_tipo_exercicio',
'bindingKey' => 'id',
'joinType' => 'INNER',
'dependent' => false,
'cascadeCallbacks' => false,
'propertyName' => '_atividades'
]
]
]);
}
}
Я делаю этот запрос:
$circuitos = $CircuitosTable->find('all', [
'conditions' => ['id_plano_treino' => $idPlano],
'contain' => ['Atividades'],
'joins' => [
[
"table" => "Tiposexercicios",
"alias" => "TipoExercicio",
"type" => "INNER",
"conditions" => ["TipoExercicio.id = Atividades.id_tipo_exericio"]
]
]
]);
Ожидаемый результат:
Select * From Circuitos
JOIN Atividades on Atividades.id_circuito = Circuitos.id
JOIN Tiposexercicios on Tiposexercicios.id = Atividades.id_tipo_exercicio
Представленный запрос не работает должным образом. Как это сделать?
Отлично! Вы сохранили все мои проблемы! У меня действительно возникли проблемы с использованием нескольких отношений или более уровней связей. Спасибо! –
У меня все еще проблема с этой моделью, я могу только вернуть таблицу данных ciruitos. Я попытался использовать -> Выбрать, чтобы искать все поля из всех таблиц, но не работал. Трудность заключается в том, как возвращаться и читать в представлении. –
@VainerCesario Что вы на самом деле хотите сделать? Фильтрация по связанным данным? Получение связанных данных? И то и другое? – ndm