yii2 - Yii2框架的右连接
问题描述
看法
<?php
$url = Yii::$app->urlManager->createUrl(['admin/sale/prduct']);
?>
视图页面中的脚本代码通过 GET 发送 id
视图页面中的脚本
<script>
function ddlcategor(id){
$.ajax({
type:'GET',
url:'<?=$url?>',
data:{id:id},
success: function(data){
$("#test").html(data);
}
});
}
</script>
控制器文件!
控制器
<?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 键入以获取非对象的属性
解决方案
Yii::$app->db->createCommand()
返回数组。每行都是一个具有列名和值的关联数组。如果选择不返回任何内容,则会收到一个空数组。
Yii::$app->db->createCommand()->queryAll();
在您的示例中$value 不是 object。它是数组:
$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/ 使用此服务,您可以简单地跟踪粘贴到 ajax 的 url 返回的结果和错误。
推荐阅读
- hadoop - 添加节点/Hadoop
- azure - 如何在 CosmosDB Javascript 存储过程中执行批量字段重命名
- javascript - 如何使用包含字符“-”的键的 webpack 4 JSON 摇树功能?
- python - 获取 GeoJson 多边形的大小(OpenStreetMap 方式)
- go - Golang 缓冲通道在发送之前接收数据
- node.js - 使用nodejs在mongodb中保存替换的字符串数据
- azure - 将 Azure 资源复制到客户端 Azure 帐户
- spring - Spring Boot 自动配置的指标未到达 Librato
- html - *ngIf 或 [hidden] 无法正常工作
- ios - 传递参数时,ViewController 的变量值由前向 ViewController 更改