https://join.slack.com/t/yii/shared_invite/MjIxMjMxMTk5MTU1LTE1MDE3MDAwMzMtM2VkMTMyMjY1Ng
всем привет.
Если написать следующую строчку:
$this->redirect($url,301);
то пользователя перекинет по указанному адресу с методом GET
как сделать чтобы пользователя перекидывало на тот же адрес с методом POST. Предварительно добавив какие нибудь данные?
->addOrderBy(new Expression(Company::find()
->where(...)
->exists()))
'rules' => [
[
'allow' => false,
'roles' => ['?'],
],
[
'actions' => ['del', 'logout', 'change'],
'allow' => true,
'roles' => ['@'],
],
],
->addSelect(['exists_company' => new Expression(Company::find()
->where(...)
->exists())])
->addOrderBy('exists_company')
прям в интернете сайт гитхаба
крутые человеки в нем
и днем и ночью @andku ученный
ответит ночью, также днем
Там на неведомых вопросах
подымет @leto бурный спам,
в замысловатеньких запросах
@Punka ответит нам и вам
`code`->addOrderBy(new Expression(Company::find()
->where(...)code
public function getCriteriaRatingByType($type)
{
$criteria = new CDbCriteria;
if ($type == 6) {
$criteria->select = '*, case
when t.`rating_workday` >= 10 THEN t.rating_value*1000
else rating_value
end as rating_value_test';
} else {
$criteria->select = '*, rating_value as rating_value_test';
}
$criteria->join = 'LEFT OUTER JOIN `admin_user` `rxUser` ON (`t`.`rx_user` = `rxUser`.`uid`)';
$criteria->compare('rx_ratingtype', $type);
$criteria->compare('rating_value', $this->rating_value);
$sort = 'rating_value_test DESC';
if (isset($_POST['rating_date'])) {
$this->resetScope();
$criteria->addCondition("rating_date='" . $_POST['rating_date'] . "'");
if ($_POST['rating_date'] >= '1506') {
$sort .= ', rating_workday DESC, rx_user ASC';
}
}
$criteria->addCondition('t.rx_user in (select uid from admin_user WHERE admin_user.role = "USER" and admin_user.role_status = 3)');
// исключение из рейтинга определенных пользователей
$criteria->addNotInCondition('t.rx_user', array('896'));
if (isset($_POST['rx_area']) and (Yii::app()->user->role == User::ROLE_ADMIN or Yii::app()->user->role == User::ROLE_MODERATOR)) {
$criteria->addCondition("rx_area=" . $_POST['rx_area']);
return array($criteria, $sort);
} else {
if (Yii::app()->user->rx_area) {
$criteria->addCondition("rx_area=" . Yii::app()->user->rx_area);
return array($criteria, $sort);
} else {
$criteria->addCondition("rx_area=1");
return array($criteria, $sort);
}
}
}
@head26 вот проще
/**
* @param $type
* @return array
*/
public function getCriteriaRatingByType($type)
{
$query = new Query();
if ($type == 6) {
$query->select = '*, case
when rating.`rating_workday` >= 10 THEN rating.rating_value * 1000
else rating_value
end as rating_value_test';
} else {
$query->select = '*, rating_value as rating_value_test';
}
$query->from = 'rating';
$br = $query->createCommand();
print_r($br);
}
Такая же ошибка
public function getAdminUser()
{
return $this->hasOne(AdminUser::className(), ['uid' => 'rx_user']);
}
->addOrderBy([new Expression(Company::find()
->where(...)
->exists()) => SORT_DESC])
->addSelect(['exists_company' => new Expression(Company::find()
->where(...)
->exists())])
->addOrderBy(['exists_company' => SORT_DESC])
->with([
'products' => function (ProductQuery $query){
$query->active()->orderBy('stock_sorting');
},
])
@head26 Как к этому
public function getCriteriaRatingByType($type)
{
$query = new Query();
if ($type == 6) {
$query->select = '*, case
when rating.`rating_workday` >= 10 THEN rating.rating_value * 1000
else rating_value
end as rating_value_test';
} else {
$query->select = '*, rating_value as rating_value_test';
}
$query->from = 'rating';
$br = $query->createCommand();
print_r($br);
}
Добавить это
public function getAdminUser()
{
return $this->hasOne(AdminUser::className(), ['uid' => 'rx_user']);
}
->select
строку, там должен быть объект
к этому
- пиши соответственное
public static function search($type, $limit = 500)
{
list($sql, $sort) = self::getRatingByType($type);
$provider = new ActiveDataProvider([
'query' => $sql,
'pagination' => [
'pageSize' => $limit,
],
'sort' => [
'defaultOrder' => $sort,
],
]);
return $provider;
}
/**
* @param $type
* @return array
*/
public function getRatingByType($type)
{
$query = new Query();
if ($type == 6) {
$query->select(['*', 'case
when rating.`rating_workday` >= 10 THEN rating.rating_value * 1000
else rating_value
end as rating_value_test']);
} else {
$query->select(['*', 'rating_value as rating_value_test']);
}
$query->from(['rating']);
$query->join('LEFT OUTER JOIN', 'admin_user', '`rating`.`rx_user` = `admin_user`.`uid`');
$query->join('LEFT OUTER JOIN', 'admin_profile', '`rating`.`rx_user` = `admin_profile`.`user_id`');
$query->andFilterCompare('rx_ratingtype', $type);
$query->andFilterCompare('rating_value', $this ? $this->rating_value : null);
$sort = 'rating_value_test DESC';
if (isset($_POST['rating_date'])) {
//$this->loadDefaultValues();
$query->andWhere("rating_date = '" . $_POST['rating_date'] . "'");
if ($_POST['rating_date'] >= '1506') {
$sort .= ', rating_workday DESC, rx_user ASC';
}
}
$query->andWhere('rating.rx_user in (select uid from admin_user WHERE admin_user.role = "USER" and admin_user.role_status = 3)');
// исключение из рейтинга определенных пользователей
// $criteria->addNotInCondition('t.rx_user', array('896'));
if (isset($_POST['rx_area']) and (Yii::$app->user->identity->role == AdminUser::ROLE_ADMIN or Yii::$app->user->identity->role == AdminUser::ROLE_MODERATOR)) {
$query->andWhere("rx_area=" . $_POST['rx_area']);
return [$query, $sort];
} else {
if (Yii::$app->user->identity->rx_area) {
$query->andWhere("rx_area = " . Yii::$app->user->identity->rx_area);
return [$query, $sort];
} else {
$query->andWhere("rx_area = 1");
return [$query, $sort];
}
}
}
, плюс на Yii 1 писал начинающий программист :-D и сделал всё через жопу )))
появился еще один начинающий, который делает так же)))
вот это супер$query->andWhere("rating_date = '" . $_POST['rating_date'] . "'");
>
$query->andWhere("rating_date = '" . $_POST['rating_date'] . "'");
вот это не то что не активКвери, так вдобавок еще и sql-иньекция
Мужики вот этот кусок кода не работает:
$query = new Query();
$query->select(['*', 'case when rating.`rating_workday` >= 10 THEN rating.rating_value * 1000
else rating_value
end as rating_value_test']);
Как переделать на нормальный лад?
@RAPOS ```
/**
* Sets the SELECT part of the query.
* @param string|array|Expression $columns the columns to be selected.
* Columns can be specified in either a string (e.g. "id, name") or an array (e.g. ['id', 'name']).
* Columns can be prefixed with table names (e.g. "user.id") and/or contain column aliases (e.g. "user.id AS user_id").
* The method will automatically quote the column names unless a column contains some parenthesis
* (which means the column contains a DB expression). A DB expression may also be passed in form of
* an [[Expression]] object.
*
* Note that if you are selecting an expression like `CONCAT(first_name, ' ', last_name)`, you should
* use an array to specify the columns. Otherwise, the expression may be incorrectly split into several parts.
*
* When the columns are specified as an array, you may also use array keys as the column aliases (if a column
* does not need alias, do not use a string key).
*
* Starting from version 2.0.1, you may also select sub-queries as columns by specifying each such column
* as a `Query` instance representing the sub-query.
*
* @param string $option additional option that should be appended to the 'SELECT' keyword. For example,
* in MySQL, the option 'SQL_CALC_FOUND_ROWS' can be used.
* @return $this the query object itself
*/
public function select($columns, $option = null)
```
$query->select([
'*',
'
( case
when rating.`rating_workday` >= 10 then rating.rating_value * 1000
else rating_value
end) as rating_value_test
'
]);
$query->select([
'*',
'rating_value_test' => new Expression('case when rating.`rating_workday` >= 10 THEN rating.rating_value * 1000 else rating_value end')
]);
$promoCode = PromoCode::findByCode($this->$attribute);
dd($promoCode->find()->findWith(['promoCodeOffer'], $promoCode));
return $this->redirect(['about']);
if ($model->load(Yii::$app->request->post()) && $model->login()) {
return $this->redirect(['about']);
}
echo
, потом редирект???
$return_url = 'http://mysite/about';
//var $return_url have previous url$this->redirect('about');
без echo пробовал?
public function goHome()
{
return Yii::$app->getResponse()->redirect(Yii::$app->getHomeUrl());
}
@letto_daniel_twitter
@letto_daniel_twitter на 6-й строке добавь return
return $this->goHome();
$this->
.
SELECT
product.id AS id,
product.image AS image,
product_additional_val.count_color AS count_color,
product_additional_val.url AS url
FROM
product
INNER JOIN (
SELECT
COUNT(product_additional.cid) AS count_color,
product_additional.*
FROM
product_color
INNER JOIN (
SELECT
product_additional_sub.pid AS pid,
product_additional_sub.url AS url,
product_additional_sub.article AS article,
product_additional_sub.cid AS cid
FROM
product_additional AS product_additional_sub
WHERE
is_active = '1'
ORDER BY
sorting ASC
) AS product_additional ON product_additional.cid = product_color.id
GROUP BY
product_additional.pid
) AS product_additional_val ON product.id = product_additional_val.pid
WHERE
product.is_active = '1'
GROUP BY
product.id
ORDER BY
product.sorting ASC,
product.id DESC
product_additional.pid
, product.id
) нужно еще учитывать сортировку этих элементов