php - 无法将 Illuminate\Database\Query\Builder 类型的对象用作数组

标签 php sql laravel

我在这里找不到错误,我该如何解决这个问题?

$db2 = DB::connection('sqlsrv')->table('Checkinout')
    ->join('Z_MemRecord','Checkinout.Userid','=','Z_MemRecord.uid')
    ->select(DB::raw("FORMAT(MAX (Checkinout.CheckTime), 'hh:mm tt') AS OffTime, FORMAT (min(Checkinout.CheckTime), 'hh:mm tt') AS Ontime, Checkinout.Userid,Z_MemRecord.Uname,FORMAT (Checkinout.CheckTime, 'MMM dd yyyy') as dates,FORMAT (Checkinout.CheckTime, 'dddd') as hour"))
    ->groupBy(DB::raw("Convert(Date, Checkinout.CheckTime),Checkinout.Userid,Z_MemRecord.Uname,FORMAT(Checkinout.CheckTime, 'MMM dd yyyy'),FORMAT (Checkinout.CheckTime, 'dddd')"));

$result = DB::connection('mysql')->table('netdoc')->insert(['Logid' => $db2['Checkinout.Userid'] ,'name'=> $db2['Z_MemRecord.Uname'],'dates' =>  $db2['dates'],'day'=>$db2['hour'],'Ontime' => $db2['Ontime'],'Offtime' => $db2['OffTime']]);


dd($db2);

最佳答案

方法groupBy()返回一个QueryBuilder,将其转换为数组,调用get()来接收行数组。

->groupBy(...)
->get();

您需要处理返回多行的查询,因此一个快速解决方案是使用 foreach() 遍历 db2。

foreach ($db2 as $row) {
    $row = (array) $row;

    $result = DB::connection('mysql')
        ->table('netdoc')
        ->insert(['Logid' => $row['Checkinout.Userid'] ,'name'=> $row['Z_MemRecord.Uname'],'dates' =>  $row['dates'],'day'=>$row['hour'],'Ontime' => $row['Ontime'],'Offtime' => $row['OffTime']]);
} 

关于php - 无法将 Illuminate\Database\Query\Builder 类型的对象用作数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59856073/

相关文章:

php - 在 PHP 中使用一个 mysqli_query 调用更新多个 MySQL 记录

php - 如何在 Switch 方法中添加多个条件案例?

php - 与 MySQL 交互的好方法?

mysql - SQL 多个 where 条件不起作用

mysql - 复杂的 SQL 查询。至少对于我来说

php - 使用数据库和碳中的日期获取特定年龄的用户

php - 在 php 中执行我自己的 groovy 脚本

.net - 如何将字符串转换为安全的 SQL 字符串?

php - Laravel Entrust,查询用户没有角色的地方

php - 在登录期间在配置中设置动态数据库 - Laravel