首页 > 解决方案 > PHP Laravel 选择查询

问题描述

foreach ($task as $task1) {
    $parent=\DB::select('select parent_wbs_id from projwbs where wbs_id= "$task1->wbs_id"');        
            foreach ($parent as $parent1){
            \DB::table('tasks')->insert([
            ['id'=>$task1->task_id, 'text'=>$task1->task_name, 'start_date'=>$task1->act_start_date, 
                'duration'=>round($days), 'parent'=>$parent1->parent_wbs_id,'progress'=>1.0]
               ]);
            }
            
            
        }

我的父选择查询有where 子句,它在其中检查每个任务循环的wbs_id并相应地获取parent_wbs_id

现在,问题是——它没有进入我的内部父循环,如果它返回一个空行给$parent,我会被卡住。

我尝试显示$parent。它提示我无效数组到字符串转换的错误

对不起,我刚刚开始 PHP laravel 项目,我是这方面的初学者。

标签: phplaravelselectnull

解决方案


将您的代码更改为:

foreach ($task as $task1) {
    // $parent=\DB::select('select parent_wbs_id from projwbs where wbs_id= "$task1->wbs_id"'); 

    $parent = \DB::table('projwbs')
                  ->where('wbs_id', $task1->wbs_id)
                  ->select('parent_wbs_id')
                  ->get();

    // $parent should contains all parent_wbs_id from table projwbs where wbs_id is equal to $task1->wbs_id
}

第一个查询中的主要错误是您最后没有使用get,因此您正在遍历查询构建器。

另外,你不能使用select你做的方式,我用 Laravel 期望的方式重写了它。


推荐阅读