правое соединение фреймворка Yii2 - PullRequest
0 голосов
/ 24 октября 2019

просмотр

<?php 
$url = Yii::$app->urlManager->createUrl(['admin/sale/prduct']);
?>

код скрипта на странице просмотра отправить идентификатор с GET

скрипт на странице просмотра

<script>

function ddlcategor(id){
$.ajax({
 type:'GET',
url:'<?=$url?>',
data:{id:id},
success: function(data){
$("#test").html(data);
}
});
}

</script>

документ контроллера!

controller

<?php

public function actionProduct($id){
    $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 ='';
echo "<option>select ...</option>";
foreach($products  as $value){
  $option.="<option value=$value->id>$value->title</option>";
}

return $option;

}

?>

Ошибка

Уведомление PHP - yii \ base \ ErrorException печатает для получения свойства необъекта

Ответы [ 2 ]

1 голос
/ 24 октября 2019

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.

0 голосов
/ 24 октября 2019

Попробуйте это:

public function actionProduct($id){
      $commands = Yii::$app->getDb();
      $products = $commands->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 ='';
        echo "<option>select ...</option>";
        foreach($products  as $value){
          $option.="<option value=$value['id']>$value['title']</option>";
        }    
    return $option;    
    }
...