Есть таблица анкет(polls). Polls относится к одному заказу(orders) и связано с ним по полю order_id. Кроме этого у анкеты есть пару видов оценок. Эти оценки хранятся в таблице scores, где в поле poll_id указана id анкеты, в поле type указывается тип оценки, в поле score значение оценки. Заказ(orders) может быть выполнен только одним филиалом, с таблицей филиалов(filials) связь по полю filial_id. Также заказ принадлежит только одному клиенту(таблица clients), связь по полю client_id. Выводятся следующие данные по анкетам
С выводом общего списка анкет я справился. Использовал следующий запрос:
$polls = Poll::find()
->where(['status_id'=>7])
->with('scores','scoreDishes','order.client','order.filial')
->orderBy(['created' => SORT_DESC])
->all();
Для этого я указал связи для модели Poll:
public function getOrder() {
return $this->hasOne(Order::className(), ['id' => 'order_id']);
}
public function getScores() {
return $this->hasMany(Score::className(), ['poll_id' => 'id']);
}
public function getScoreDishes() {
return $this->hasMany(ScoreDish::className(), ['poll_id' => 'id']);
}
Для модели Order:
public function getFilial() {
return $this->hasOne(Filial::className(), ['id' => 'filial_id']);
}
public function getClient() {
return $this->hasOne(Client::className(), ['id' => 'client_id']);
}
Но теперь проблема с фильтрацией данных. Как нужно изменить запросы, чтобы получить только те анкеты, которые относятся к заказам, которые выполнены конкретным филиалом. То есть те строки, где поле filial_id у таблицы orders равно например 2. Структура таблиц:
CREATE TABLE `polls` (
`id` int(11) NOT NULL,
`email_id` int(11) DEFAULT NULL,
`status_id` int(11) NOT NULL,
`created` datetime NOT NULL,
`updated` datetime NOT NULL,
`order_id` int(11) NOT NULL,
`key` varchar(255) NOT NULL,
`comment` text
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE `scores` (
`id` int(11) NOT NULL,
`poll_id` int(11) NOT NULL,
`type_code` varchar(255) NOT NULL,
`score` int(11) NOT NULL,
`comment` text
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE `score_dishes` (
`id` int(11) NOT NULL,
`poll_id` int(11) NOT NULL,
`dish_id` int(11) NOT NULL,
`score` int(11) NOT NULL,
`comment` text
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE `orders` (
`id` int(11) NOT NULL,
`order_number` varchar(255) NOT NULL,
`filial_id` int(11) NOT NULL,
`driver_id` int(11) NOT NULL,
`operator_id` int(11) NOT NULL,
`client_id` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE `filials` (
`id` int(11) NOT NULL,
`crm_id` varchar(255) DEFAULT NULL,
`name` varchar(255) NOT NULL,
`is_active` tinyint(1) NOT NULL DEFAULT '1'
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE `clients` (
`id` int(11) NOT NULL,
`phone` varchar(255) DEFAULT NULL,
`name` varchar(255) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Есть 2 подобные функции для установки хука для 64 и 32 - битных приложений:
На данный вопрос уже ответили:
Хочу начать знакомство с формами, но не могу установить необходимы шаблонОблазил уже весь инсталлер, не вижу ничего похожего