多个表的联合结果正在动态分配

时间:2019-06-20 16:03:03

标签: php laravel laravel-5

表名应作为参数(字符串数组)传递。我需要从每个表中获得相同列barplot(data1, beside=TRUE, horiz=TRUE, col=c("red","blue","orange", "green"), xlim=c(0,max(data1)+0.05)) foreign_key_id的值,但是只有最近的十个结果(我的意思是最后更新的结果)。我需要合并每个表的结果。另外,我已经有要搜索其表的updated_at列表。我尝试这样做的方式:

foreign_key_id

但是我遇到了一个异常$foreign_key_ids = ['1', '2', '3', '4']; $tables = ['table_A', 'table_B', 'table_C']; foreach ($foreign_key_ids as $foreign_key_id) { $index = 0; foreach($tables as $table) { $query = DB ::table($table) ->select('foreign_key_id', 'updated_at') ->where('foreign_key_id', $foreign_key_id) ->orderBy('updated_at', 'desc') ->limit(10); if ($index == 0) { $single_table = $query; } else { $single_table->union($query); } $index++; } $full_result[] = $single_table; } $final_result = []; foreach($full_result as $single_result) { $final_result->union($single_result); } $final_result = $final_result->get(); } ,但不确定为什么,导致最后Call to a member function union() on array 中的$single_result不是数组,它是foreach的实例。

1 个答案:

答案 0 :(得分:1)

  

...并且不确定为什么,导致最后$single_result中的foreach不是array,而是Builder的实例。

鉴于该问题未指定抛出错误的那一行,我假设是在这两行中:

// ...

$final_result = []; // <----------- (1)

foreach($full_result as $single_result)
{
    $final_result->union($single_result);  // <----------- (2)
}

// ...

如您所见,$final_result被初始化为array(1),然后您在此->union()(2)上调用array方法。这就是引发错误的原因(或者至少会引发另一个错误)。

尝试以下方法:

// ...

$final_result = collect(); // <-----------

foreach($full_result as $single_result)
{
    $final_result = $final_result->union($single_result);  // <-----------
}

// ...