I used MySQL function in select to create a qty_available column, then I added that attribute in the rules under safe and created a public variable for qty_available, but I still kept getting Unknown Property Exception. Why does this happens?
My Search Model
public $qty_available;
public function rules()
{
return [
[['product', 'qty_available'], 'safe'],
];
}
public function search($params)
{
$query = Product::find()->joinWith('stocktrxns', true, 'LEFT JOIN')
->select(['product', 'qty_available' => '(SUM(CASE WHEN stock.is_out = false THEN qty ELSE 0 END) -
SUM(CASE WHEN stock.is_out = true THEN qty ELSE 0 END))'])
->leftJoin('stock', 'stock.tra_no = stocktrxn.tra_no')
->groupBy(['product']);
GridView doesn’t recognize it, throws Unknown Property Error:
<?=
GridView::widget([
'dataProvider' => $inventory,
'filterModel' => $inventorySearch,
'columns' => [
'product',
'qty_available'
]
]);
?>