表名应作为参数(字符串数组)传递。我需要从每个表中获得相同列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
的实例。
答案 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); // <-----------
}
// ...