Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
仅为特定列从表中检索行数组(PHP/SQL/Laravel)_Php_Sql_Database_Laravel_Multidimensional Array - Fatal编程技术网

仅为特定列从表中检索行数组(PHP/SQL/Laravel)

仅为特定列从表中检索行数组(PHP/SQL/Laravel),php,sql,database,laravel,multidimensional-array,Php,Sql,Database,Laravel,Multidimensional Array,为了解决这个问题,我概括了我的代码 假设我有4个模型,它们与数据库中的不同表相关 Models: ObjectType1, ObjectType2, ObjectType3, AllObjects Tables: object-type-1, object-type-2, object-type-3, all-objects AllObjects模型包含一个函数getRowsFromTable,它接受一个表名(object-type-1 | object-type-2 | object-typ

为了解决这个问题,我概括了我的代码

假设我有4个模型,它们与数据库中的不同表相关

Models: ObjectType1, ObjectType2, ObjectType3, AllObjects
Tables: object-type-1, object-type-2, object-type-3, all-objects
AllObjects模型包含一个函数getRowsFromTable,它接受一个表名(object-type-1 | object-type-2 | object-type-3)。它还包含一个名为getSpecificColumns的函数,该函数还接受一个表名

“所有对象”表的格式如下所示:

id | name | p1 | p2 | p3 | p4 | p5 | p6 |created_at 
---|------|----|----|----|----|----|----|-----------
1  |elem-1|  x |  x |  x |null|null|null| date1 
2  |elem-2|  y |  y |  y |null|null|null| date2
3  |elem-3|null|null|null|  z |  z |null| date3
4  |elem-4|null|null|null|null|null|  w | date4
id | name | p1 | p2 | p3 |created_at 
---|------|----|----|----|-----------
1  |elem-1|  x |  x |  x | date1 
2  |elem-2|  y |  y |  y | date2
id | name | p4 | p5 |created_at 
---|------|----|----|-----------
1  |elem-3|  z |  z | date3
id | name | p6 |created_at 
---|------|----|-----------
1  |elem-4|  w | date4
对象类型-1如下所示:

id | name | p1 | p2 | p3 | p4 | p5 | p6 |created_at 
---|------|----|----|----|----|----|----|-----------
1  |elem-1|  x |  x |  x |null|null|null| date1 
2  |elem-2|  y |  y |  y |null|null|null| date2
3  |elem-3|null|null|null|  z |  z |null| date3
4  |elem-4|null|null|null|null|null|  w | date4
id | name | p1 | p2 | p3 |created_at 
---|------|----|----|----|-----------
1  |elem-1|  x |  x |  x | date1 
2  |elem-2|  y |  y |  y | date2
id | name | p4 | p5 |created_at 
---|------|----|----|-----------
1  |elem-3|  z |  z | date3
id | name | p6 |created_at 
---|------|----|-----------
1  |elem-4|  w | date4
对象类型2如下所示:

id | name | p1 | p2 | p3 | p4 | p5 | p6 |created_at 
---|------|----|----|----|----|----|----|-----------
1  |elem-1|  x |  x |  x |null|null|null| date1 
2  |elem-2|  y |  y |  y |null|null|null| date2
3  |elem-3|null|null|null|  z |  z |null| date3
4  |elem-4|null|null|null|null|null|  w | date4
id | name | p1 | p2 | p3 |created_at 
---|------|----|----|----|-----------
1  |elem-1|  x |  x |  x | date1 
2  |elem-2|  y |  y |  y | date2
id | name | p4 | p5 |created_at 
---|------|----|----|-----------
1  |elem-3|  z |  z | date3
id | name | p6 |created_at 
---|------|----|-----------
1  |elem-4|  w | date4
对象类型-3如下所示:

id | name | p1 | p2 | p3 | p4 | p5 | p6 |created_at 
---|------|----|----|----|----|----|----|-----------
1  |elem-1|  x |  x |  x |null|null|null| date1 
2  |elem-2|  y |  y |  y |null|null|null| date2
3  |elem-3|null|null|null|  z |  z |null| date3
4  |elem-4|null|null|null|null|null|  w | date4
id | name | p1 | p2 | p3 |created_at 
---|------|----|----|----|-----------
1  |elem-1|  x |  x |  x | date1 
2  |elem-2|  y |  y |  y | date2
id | name | p4 | p5 |created_at 
---|------|----|----|-----------
1  |elem-3|  z |  z | date3
id | name | p6 |created_at 
---|------|----|-----------
1  |elem-4|  w | date4
AllObject模型中的函数:

public static function getSpecificColumns($tableName){
    $columns = Schema::getColumnListing($tableName);
    $removeColumns =  ['id', 'created_at'];

    foreach($removeColumns as $needle){
        $key = array_search($needle,$columns);
        unset($columns[$key]);
    }

    return $columns;
}

public static function getAllRowsFromTable($tableName){
    $columnsUsed = AllObjects::getSpecificColumns($tableName);
    if($tableName = "object-type-1"){
        $allRows = ObjectType1::select($columnsUsed)->get(); //This is where my problem is
    }
    else if($tableName = "object-type-2"){
        $allRows = ObjectType2::select($columnsUsed)->get(); //This is where my problem is
    }
    else if($tableName = "object-type-3"){
        $allRows = ObjectType3::select($columnsUsed)->get(); //This is where my problem is
    }
        return $allRows;
    }
我的问题是,如何编写查询以获得所请求表所需的特定行的多维数组

例如,如果传入的$tableName是“object-type-1”,我希望返回一个数组$allRows,其中:

$allRows[0] = ['name' => "elem-1", 'p1' => "x", 'p2' => "x", 'p3' => "x"]
$allRows[1] = ['name' => "elem-2", 'p1' => "y", 'p2' => "y", 'p3' => "y"]
我试过:

$numColumns = count($columnsUsed);
$index = 0;

$allRows = ObjectType1::select(
foreach($columnsUsed as $column) {
    echo "'" . $column "'"; 
    $index++;

        if($numColumns > $index)
            echo ",";
})->get();      
但它不允许在“select”语句中使用foreach循环

ObjectType1::select("'".implode("','", $columnsUsed)."'")->get();
introde()与您使用foreach循环所做的工作基本相同,应该可以为您节省一些麻烦

introde()与您使用foreach循环所做的工作基本相同,应该可以为您节省一些麻烦