laravel 从mySql查询中获取列名,即使没有找到结果[重复]

i7uq4tfw  于 2023-06-24  发布在  Mysql
关注(0)|答案(2)|浏览(82)

此问题已在此处有答案

How to Get an Array of All of the Columns of a Query Builder Result in Laravel?(2个答案)
2天前关闭。
我使用laravel执行前端发送的动态查询字符串。
这是一个开发环境,用于加快开发过程。
因为我不知道查询会是什么样子,所以我不能真正使用laravel查询构建器。
所以这个

$users = DB::table('look_up_lists')
    ->leftJoin('look_up_list_values', 'look_up_lists.id', '=', 'look_up_list_values.look_up_list_id')
    ->where('look_up_list_values.id', '=', 99)
    ->get();

实际上会是这样的

select * from `look_up_lists` left join `look_up_list_values` on `look_up_lists`.`id` = `look_up_list_values`.`look_up_list_id` where `look_up_list_values`.`id` = 99

在PHPmyAdmin中,即使没有抛出结果,您也可以看到所涉及的列。

这正是我需要的,我不知道该怎么做。只要有结果,我就设法让列参与进来,但当我没有任何结果时,我就不会这样做。
我试过这个:

$sth =  DB::getPdo()->prepare($query);
    $sth->execute();
    return  $sth->fetchALl(\PDO::FETCH_OBJ);

再一次,只要有结果就行。
我被困了好几天,有人能帮忙吗?

pdsfdshx

pdsfdshx1#

如果结果集是空的,我添加了一个 count()作为ignore*,这将强制输出只有一行并给予列名,或者你将空结果转储到临时表中,然后你可以在teh tmep表上使用简单的select。祝你好运

<?php
            include_once "../include/connect.pdo.php";
            
            $q = "select * from ttt";
            $xx = $connect_pdo->prepare($q);
            $xx->execute([]);
            $rows = $xx->fetchAll(PDO::FETCH_OBJ);
            $n = count($rows);
            
            echo var_dump($rows);
            
           $q = "select *,count(*) as ingnor from ttt";
           $xx = $connect_pdo->prepare($q);
           $xx->execute([]);
           $rows = $xx->fetchAll(PDO::FETCH_OBJ);
           $n = count($rows);
           echo "<p>". var_dump($rows);

// dump unknown query in temp-table then use the simple select with count

        $q = "CREATE TEMPORARY TABLE IF NOT EXISTS t1temp as (select * from ttt)";
        $xx = $connect_pdo->prepare($q);
        $xx->execute([]);
        $q = "select *,count(*) from t1temp";
        $xx = $connect_pdo->prepare($q);
        $xx->execute([]);
        $rows = $xx->fetchAll(PDO::FETCH_OBJ);
        $n = count($rows);
        $q = "drop temporary table t1temp";
        $xx = $connect_pdo->prepare($q);
        $xx->execute([]);
        echo "<p>" . var_dump($rows);
   

// The output
 
        F:\xampp-htdocs\project_template\user\test.php:11:
array (size=0)
  empty
F:\xampp-htdocs\project_template\user\test.php:24:
array (size=1)
  0 => 
    object(stdClass)[3]
      public 'id' => null
      public 'i0' => null
      public 'i1' => null
      public 't1' => null
      public 'c1' => null
      public 'e1' => null
      public 'u1' => null
      public 's1' => null
      public 'x1' => null
      public 'rt' => null
      public 'i2' => null
  public 'count(*)' => string '0' (length=1)

相关问题