无法将类stdClass的对象转换为字符串(错误号:1064)

时间:2019-04-09 20:58:51

标签: codeigniter codeigniter-3

我一直在收到此错误(请在问题底部检查确切的错误)我已经一遍又一遍地检查,但是找不到什么地方出了问题。好像还好在 insert_batch 上可以正常工作,但是在 update_batch 上却收到此错误。这是我当前的代码

Codeigniter模型: 这是正确提取数据的模型

write()

Codeigniter控制器: 这是我的控制器,在这里检查是否有种子行。如果是,则更新,否则插入。

    function get_seeds($tournament_id) {
        $this->db->where('tournament_id', $tournament_id);
        $result = $this->db->get('tournament_seed');
        return $result->result();
    }

Print_r($ check_seeds)

    $check_seeds = (object)$this->tournament_model->get_seeds($tournament_id);
    if ($_POST) {
        foreach ($check_seeds as $key => $value) {
            if(!empty($key) && !empty($value)) {
                $seeded[] = array(
                    'id' => $value->id,
                    'tournament_id' => $tournament_id,
                    'stage_id' => $stage_id,
                    'seed_id' => $value,
                    'team_name' => $key,
                );
                $this->db->update_batch('tournament_seed', $seeded, 'id');
                redirect('organizer/tournaments);
            } else {
                //something
            }
        }
    }

错误

    stdClass Object
    (
        [0] => stdClass Object
        (
            [id] => 3
            [tournament_id] => 713161746
            [stage_id] => 3
            [seed_id] => 1
            [team_name] => -V-ATTAX
        )

        [1] => stdClass Object
        (
            [id] => 4
            [tournament_id] => 713161746
            [stage_id] => 3
            [seed_id] => 2
            [team_name] => NIP
        )

        [2] => stdClass Object
        (
            [id] => 5
            [tournament_id] => 713161746
            [stage_id] => 3
            [seed_id] => 3
            [team_name] => fnatic
        )
    )

1 个答案:

答案 0 :(得分:2)

您正在尝试对刚从数据库表 tournament_seed 查询的相同数据使用 update_batch(),但是您没有使用新的 $ _ POST 数据进行更新。

您还可以在循环中使用 update_batch(),这是错误的。循环只是创建要更新的数组,然后在循环之外 update_batch()

使用以下命令创建一个数组,该数组以后可用于 update_batch(),例如:

$seeded=array();
$sd=array();        
foreach($_POST['your_newly_posted_seeds'] as $key=>$value){
    $sd['id']=$value->id;
    $sd['tournament_id']=$tournament_id;
    //...
    array_push($seeded, $sd);
}

$this->db->update_batch('tournament_seed', $seeded, 'id');

update_batch() from the docs,向下滚动或搜索: $ this-> db-> update_batch(),因为没有书签。