добавить своей поле в select (AS)

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Аватара пользователя
ninzzo
Сообщения: 339
Зарегистрирован: 2014.04.25, 07:29

добавить своей поле в select (AS)

Сообщение ninzzo » 2018.09.23, 14:56

Есть запрос:
$pr = Product::find()
->select(['id', 'name', 'price'])
->addSelect(['sale_price'])
->where([ 'category_id' => $cat->id])
->all();
В модели Product я добавил
class Product extends \yii\db\ActiveRecord
{
public $sale_price;
получаю ошибку:
Column not found: 1054 Unknown column 'sale_price' in 'field list
Как мне добавить своей поле в запрос то?
хочу что бы вернулось sale_price = мое значение или результат функции.

Аватара пользователя
carono
Сообщения: 49
Зарегистрирован: 2018.04.28, 11:05

Re: добавить своей поле в select (AS)

Сообщение carono » 2018.09.23, 16:34

Тебе нужно прописать значение для sale_price, иначе он у тебя пытается вывести колонку, а её у тебя в базе нет.

Код: Выделить всё

->addSelect(['sale_price'=>\yii\db\Expression('100')])

Аватара пользователя
ninzzo
Сообщения: 339
Зарегистрирован: 2014.04.25, 07:29

Re: добавить своей поле в select (AS)

Сообщение ninzzo » 2018.09.25, 20:08

ок спасибо.

еще способ нашел:

Код: Выделить всё

$pr = Product::find()              
                ->select([
                    'id', 'name', 'price', 'weight', 'description', 'inventory', 'image', 'created_at',
                    '(SELECT price FROM `deals_of_day` WHERE deals_of_day.product_id = product.id AND deals_of_day.date = "'.$date.'") AS sale_price', 
                ])               
                ->where(['user_id' => $_POST['retailer_id'], 'category_id' => $cat->id])
                ->andwhere(['in', 'id', $dod])
                [b]->asArray()[/b]
                ->all();
нужно добавить ->asArray() перед ->all() и все заработало)

Ответить