Yii::$app->db->createCommand()
возвращает массив . Каждая строка представляет собой ассоциативный массив с именами и значениями столбцов. если выбор ничего не возвращает, будет получен пустой массив .
Yii::$app->db->createCommand()->queryAll();
В вашем примере значение $ не objact . Это массив:
$products = Yii::db->createCommand('select products.* from products right join (select * from product_category where product_category.cat_pro_id ='.$id.') as t on(products.id = t.product_id)')->queryAll();
$option ='';
//No needed in this variant
//echo "<option>select ...</option>";
If(!empty($products)){
foreach($products as $value){
$option.="<option value=$value['id']>$value['title']</option>";
}
}else{
$option.= "<option selected disabled>No results!</option>"
}
return $option;
Для отладки результата ajax я рекомендую использовать https://www.getpostman.com/ Используя этот сервис, вы можете просто отслеживать результаты и ошибки, возвращаемые URL, вставленными в ajax.