Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.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 无法将Illumb\Database\Query\Builder类型的对象用作数组_Php_Sql_Laravel - Fatal编程技术网

Php 无法将Illumb\Database\Query\Builder类型的对象用作数组

Php 无法将Illumb\Database\Query\Builder类型的对象用作数组,php,sql,laravel,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.

我在这里找不到错误我该如何修复

$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


您使用的是哪种数据库管理系统?db2、mysql和sqlsrv给出了不同的指示。我正在使用SQL Server MS 2018,我只想将修改后的数据从sqlsrv插入mysql。
dd($db2)
$result
之前。正如消息所说,它是一个构建器对象,您可能需要首先使用
->get()
获取结果,然后才能访问
Checkinout.Userid
现在它显示此错误“无法将stdClass类型的对象用作数组”。Laravel返回stdObjects我将其转换为数组,我想这会有帮助:)它现在可以工作了!它确实传递了我需要的所有数据!这真是帮了大忙!天啊。非常感谢达姆,最后一个问题。我如何修复重复的东西?“完整性约束冲突:1062项“主键”的重复条目“40218”您的主键是什么?通常由数据库设置
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']]);
}