CakePHP ищет несколько моделей

У меня есть стол пользователи и это связано с тренеры а также клиенты.

Я хочу искать как в таблице пользователей, так и в таблице тренеров.

Мои таблицы выглядят так:

CREATE TABLE IF NOT EXISTS `team07`.`users` (
`id` INT(11) NOT NULL,
`email` VARCHAR(45) NOT NULL,
`password` VARCHAR(255) NOT NULL,
`usertype` CHAR(2) NOT NULL,
`created` DATETIME NOT NULL,
`modified` DATETIME NULL DEFAULT NULL,
`firstname` VARCHAR(45) NOT NULL,
`lastname` VARCHAR(45) NOT NULL,
`phonenumber` VARCHAR(45) NOT NULL,
`suburb` VARCHAR(45) NOT NULL,
`state` VARCHAR(10) NOT NULL,
`businessname` VARCHAR(45) NULL DEFAULT NULL,
`image` BLOB NULL DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE INDEX `email_UNIQUE` (`email` ASC))
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8;

А также

CREATE TABLE IF NOT EXISTS `team07`.`coaches` (
`id` INT NOT NULL,
`coachid` INT NOT NULL,
`appstate` INT NOT NULL,
`bio` VARCHAR(2048) NULL,
`price` INT NULL,
PRIMARY KEY (`id`),
INDEX `COACH_INFOFK_idx` (`coachid` ASC),
UNIQUE INDEX `coachid_UNIQUE` (`coachid` ASC),
CONSTRAINT `COACH_INFOFK`
FOREIGN KEY (`coachid`)
REFERENCES `team07`.`users` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;

Вот как выглядит код, который я делаю:

  public function review()
{
//Select all users which are a Coach AND have appstate = 1 (Just signed up, in review)
$users = $this->paginate($this->Users);
$users = $this->Users->find('all')->where(['Users.usertype'=>'CO', 'Coaches.appstate'=>'1']);

$this->set(compact('users'));
$this->set('_serialize', ['users']);
}

Однако у меня есть проблемы, потому что моя страница отвечает

Ошибка: SQLSTATE [42S22]: столбец не найден: 1054 неизвестный столбец
‘Coaches.appstate’ в ‘предложении where’

Как это исправить?

0

Решение

Если ассоциация понимает торт, вы можете использовать для загрузки ее:
https://book.cakephp.org/3.0/en/orm/query-builder.html#loading-associations

Так что-то вроде этого:

public function review()
{
//Select all users which are a Coach AND have appstate = 1 (Just signed up, in review)
$users = $this->paginate($this->Users);
$users = $this->Users->find('all')->contain(['Coaches'])->where(['Users.usertype'=>'CO', 'Coaches.appstate'=>'1']);

$this->set(compact('users'));
$this->set('_serialize', ['users']);
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector