【问题标题】:Yii2: trying to get property of non-objectYii2:试图获取非对象的属性
【发布时间】:2015-07-12 08:10:20
【问题描述】:

我想列出 create_client 表中的所有不同记录,并尝试了此代码,但出现错误。

这段代码有什么问题?

    $query = new Query;
    $ccname = (new yii\db\Query())
    ->select(['id','company_name','client_code'])
    ->from('create_client')
    ->distinct()
    ->all();

     $sidemenus = mysql_fetch_array($ccname);
     echo $sidemenu['company_name']."<br />";

更新-

通过这个得到了想要的结果-

$posts = $db->createCommand('SELECT DISTINCT company_name,client_code FROM create_client')
            ->queryAll();
         var_dump($posts)

但是如何将其转换为字符串以便我可以在页面上使用呢?

【问题讨论】:

  • 我猜你的顺序有误。 ->distinct() 是在 select not from .. yiiframework.com/doc-2.0/guide-db-query-builder.html 之后
  • 您将 $ccname 查询传递给 mysql_fetch_array 但它期望资源不是数组。尝试使用它返回的 print_r($ccname)。你不需要使用 mysql_fetch_array
  • '$posts = $db->createCommand('SELECT DISTINCT company_name,client_code FROM create_client') ->queryAll(); var_dump($posts)' 得到了这个工作,但如何将此数组转换为字符串?
  • 将数组转换为字符串?你需要做什么?你想得到什么?你能发布 $posts 的结果吗?
  • 是的,我实际上想列出所有不同的 company_name 以及相应的 client_code

标签: php mysql yii2


【解决方案1】:

尝试像这样修改您的查询

$query = new yii\db\Query();
$data = $query->select(['id','company_name','client_code'])
    ->from('create_client')
    ->distinct()
    ->all();

重要的部分是 all() 方法,因为它执行您的查询并将结果作为数组返回

all() 执行查询并将所有结果作为数组返回。

然后您可以将结果作为普通数组使用

if($data) {
    foreach($data as $row)
    {
        echo 'company_name: ' . $row['company_name'] . ' client_code: ' . $row['client_code'] . '<br>';
    }
}

documentation yii2 - class yii\db\Query

【讨论】:

  • 一个问题,我怎样才能将这个从控制器渲染到视图?
  • 如果您是新手,您应该阅读入门指南并尝试一下……之后您会发现更多事情。 yiiframework.com/doc-2.0/guide-start-databases.html
  • 但是如何将这个foreach循环从控制器传递到视图
  • 阅读指南并了解有关 MVC 架构的更多信息。您的查询在模型或控制器中运行,如果您在指南中看到您的 foreach 就在视图中......只需查看、阅读、尝试。快乐编码
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多